【发布时间】:2020-02-03 11:13:19
【问题描述】:
我正在使用外部 API 来返回所有银行假日。我需要使用此响应来禁用 Angular Material 日期选择器中的所有这些日期(以及周末)。
因为我正在进行 HTTP 调用,所以它似乎不起作用。
这是我最新的代码,但目前这只是禁用所有日期:
onDisableDates = (date: any) => {
const day = date.day();
this.validationService.getBankHolidayDates().subscribe(response => {
const bankHolidays = response['england-and-wales'].events.map(i => new Date(i.date));
bankHolidays.forEach(bankHoliday => {
let isBankHoliday = false;
const holiday = bankHoliday.toLocaleDateString();
const input = moment(new Date(date)).format('DD/MM/YYYY');
if (holiday === input) {
isBankHoliday = true;
}
return day !== 0 && day !== 6 && !isBankHoliday;
});
});
}
HTML
<mat-form-field>
<mat-label>DD/MM/YYYY</mat-label>
<input id="startDate" matInput [matDatepickerFilter]="onDisableDates" [matDatepicker]="picker" [min]="minDate" formControlName="startDate">
<mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
<mat-datepicker touchUi #picker></mat-datepicker>
</mat-form-field>
另外,请注意我使用的是 MAT_DATE_LOCALE 和 MomentDateAdapter。
任何指导都会很棒,因为我花了几天的时间试图让它发挥作用!
Stackblitz 在这里:https://stackblitz.com/edit/angular-wvqzpb-u9d52c
【问题讨论】:
-
我很乐意为您提供帮助。你能为它创建一个stackblitz吗
标签: angular typescript datepicker angular-material momentjs