角度:MatDateRangeInput过滤器

问题描述

我已经实现了Angular Material Date选择器,并希望过滤可以选择的日期。 因此,我希望用户选择一个日期,然后只能在开始日期之后的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>

TS代码

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;
  }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...