Angular 角度:MatDateRange输入过滤器

Angular 角度:MatDateRange输入过滤器,angular,angular-material,mat-datepicker,Angular,Angular Material,Mat Datepicker,我已经实现了Angular Material日期选择器,并希望过滤可以拾取的日期。 因此,我希望用户选择一个日期,然后只能在开始日期后21天或更短的时间内选择 我曾考虑使用两个日期字段,但客户希望使用日期范围的外观 但是dateRange似乎没有过滤功能。 我该如何处理这个问题呢?因此我得到了一个简单的解决方案,我仍然允许用户选择超过21天的时间,然后在第二次选择日期后,只需将其恢复到21天,并将选择器设置为新的结束日期 HTML代码 <mat-date-range-input

我已经实现了Angular Material日期选择器,并希望过滤可以拾取的日期。 因此,我希望用户选择一个日期,然后只能在开始日期后21天或更短的时间内选择

我曾考虑使用两个日期字段,但客户希望使用日期范围的外观

但是dateRange似乎没有过滤功能。
我该如何处理这个问题呢?

因此我得到了一个简单的解决方案,我仍然允许用户选择超过21天的时间,然后在第二次选择日期后,只需将其恢复到21天,并将选择器设置为新的结束日期

HTML代码

    <mat-date-range-input  [min]="minDate" [max]="maxDate"  [rangePicker]="picker"   >
      <input matStartDate placeholder="Start date" formControlName="checkin">
      <input matEndDate  placeholder="End date" formControlName="checkout" [ngModel]="calculateDays()">
    </mat-date-range-input>

在10号之前,没有日期范围,所以很多人都会做一个。我想最好的办法就是找一个这样的。角度材质日期选择器的问题是,您无法创建“自定义日期”,因此可以使用Render2和document.query获取日期。我不知道你是否能帮上忙。注:有“更好地实施日期范围”的建议:
calculateDays(): void{
let days = (this.searchForm.value.checkout - this.searchForm.value.checkin) / 86400000;
if(days > 21){
  this.searchForm.value.checkout = new Date(this.searchForm.value.checkin);
  this.searchForm.value.checkout.setDate(this.searchForm.value.checkout.getDate() + 21);
    this.searchForm.controls.checkout.patchValue(this.searchForm.value.checkout);
    days = 21;
  }
  if(days > 0){
    this.days = days;
  }
}