Angular Material 7 日期选择器:禁用多年视图
Angular Material 7 Datepicker: Disable multi year view
我使用来自@angular/material^7.0.0-rc.0 的 MatDatepicker,我制作了一个复杂的过滤器,将时间选择器中的每个可见日期与数组中的每一天进行比较,大约200 或 300 个值。每次我将日期选择器切换到多年视图模式时,它都会破坏应用程序。
我只想禁用或禁止多年视图模式,只让月模式和年模式工作。
HTML:
<mat-form-field (click)="picker.open()" class="date-field">
<span>{{(dataFields['mosaic_'+REPORT_STAGES.PLANTING]['value'] | date: 'dd/MM/yyyy') || 'Não plantou'}}</span>
<input matInput hidden [matDatepicker]="picker" placeholder="" [(value)]="dataFields['mosaic_'+REPORT_STAGES.PLANTING]['value']" (dateChange)="plantingDateChange($event)" [matDatepickerFilter]="datePickerFilter.bind(this)">
<mat-datepicker #picker></mat-datepicker>
</mat-form-field>
我的过滤方式:
datePickerFilter(d: Date): boolean {
const dAsDate = this.datePipe.transform(d, 'dd-MM-yyyy');
const validDates = this.allowedDays.filter(e => {
const eAsDate = this.datePipe.transform(new Date(e), 'dd-MM-yyyy');
return eAsDate === dAsDate;
});
console.log(validDates);
return (validDates.length > 0);
}
我在 A. Material manual 上没有找到任何可以帮助我的东西。希望任何人都可以!
非常感谢!
您可以传递自定义组件作为日历 header,这将允许您覆盖当前允许用户 select 多年视图的按钮。
此示例不具备 select 多年的能力。
https://material.angular.io/components/datepicker/overview#customizing-the-calendar-header
HTML
引用 mat-datepicker
上的自定义组件
<mat-datepicker #picker [calendarHeaderComponent]="exampleHeader"></mat-datepicker>
我使用来自@angular/material^7.0.0-rc.0 的 MatDatepicker,我制作了一个复杂的过滤器,将时间选择器中的每个可见日期与数组中的每一天进行比较,大约200 或 300 个值。每次我将日期选择器切换到多年视图模式时,它都会破坏应用程序。
我只想禁用或禁止多年视图模式,只让月模式和年模式工作。
HTML:
<mat-form-field (click)="picker.open()" class="date-field">
<span>{{(dataFields['mosaic_'+REPORT_STAGES.PLANTING]['value'] | date: 'dd/MM/yyyy') || 'Não plantou'}}</span>
<input matInput hidden [matDatepicker]="picker" placeholder="" [(value)]="dataFields['mosaic_'+REPORT_STAGES.PLANTING]['value']" (dateChange)="plantingDateChange($event)" [matDatepickerFilter]="datePickerFilter.bind(this)">
<mat-datepicker #picker></mat-datepicker>
</mat-form-field>
我的过滤方式:
datePickerFilter(d: Date): boolean {
const dAsDate = this.datePipe.transform(d, 'dd-MM-yyyy');
const validDates = this.allowedDays.filter(e => {
const eAsDate = this.datePipe.transform(new Date(e), 'dd-MM-yyyy');
return eAsDate === dAsDate;
});
console.log(validDates);
return (validDates.length > 0);
}
我在 A. Material manual 上没有找到任何可以帮助我的东西。希望任何人都可以!
非常感谢!
您可以传递自定义组件作为日历 header,这将允许您覆盖当前允许用户 select 多年视图的按钮。
此示例不具备 select 多年的能力。
https://material.angular.io/components/datepicker/overview#customizing-the-calendar-header
HTML
引用 mat-datepicker
<mat-datepicker #picker [calendarHeaderComponent]="exampleHeader"></mat-datepicker>