Как создать собственный фильтр для matDatepickerFilter - PullRequest
0 голосов
/ 19 июня 2020

Я создаю приложение angular с указателем даты angular, и мне нужно создать собственный matDatepickerFilter.

У каждого пользователя есть данные за определенный c день. Мне нужно выделить день, когда существуют данные. Это фактический фильтр:

availableDate = ['2020-06-18','2020-06-17','2020-06-16'];

calendarFilter = (d: moment.Moment): boolean => {
  return this.availableDate.includes(d.format('YYYY-MM-DD'));
}

enter image description here

Однако этот фильтр применяется для каждого пользователей.

Чтобы иметь фильтр c, указанный пользователем, я попытался передать данные пользователя в фильтр следующим образом:

в файле машинописного текста:

user.availableDate= ['2019-01-11','2020-04-09','2020-06-13'];

calendarFilter = (d: moment.Moment, userAvailableDate): boolean => {
  return userAvailableDate.includes(d.format('YYYY-MM-DD'));
}

в шаблоне :

<mat-form-field *ngFor="let user of users">
  <mat-label>Choose a date</mat-label>
  <input matInput [matDatepickerFilter]="calendarFilter(?trivial?, user.availableDate)" [matDatepicker]="myDatePicker">
  <mat-datepicker-toggle matSuffix [for]="myDatePicker"></mat-datepicker-toggle>
  <mat-datepicker #myDatePicker></mat-datepicker>
</mat-form-field>

В заключение, я не могу вызвать CalendarFilter с пользовательскими параметрами. Я вынужден использовать CalendarFilter без каких-либо параметров, опуская d: moment.Moment, чтобы заставить его работать. Но тогда я не могу передать параметр данных пользователя c.

Как я могу реализовать настраиваемые параметры в фильтре, предназначенном для каждого пользователя?

...