Использование matDatepickerFilter для фильтрации дат для нескольких представлений - PullRequest
0 голосов
/ 15 ноября 2018

В моем приложении есть угловой указатель даты, для которого я использую matDatepickerFilter:

<input matInput [matDatepicker]="myDatePicker" [matDatepickerFilter]="dateFilter.bind(this)">

В функции dateFilter я проверяю, доступна ли дата на основе некоторых критериев:

dateFilter(d: Date) {
  if (dateAvailable(d)) {
    return true;
  } else {
    return false
  }
}

Проблема в том, что этот же фильтр вызывается для каждого дня в каждом из представлений календаря (месяц, год и несколько лет).Например: при переходе от просмотра месяца к просмотру нескольких лет фильтр запускается 8766 раз (по одному на каждый день, каждый месяц, каждый год).

Это требует много времени и производительности, так какон проверяет каждый день годового или многолетнего просмотра, при этом достаточно будет проверить только год / месяц.Но так как matDatepickerFilter поддерживает только параметр даты, я не могу определить, какое представление фильтруется в настоящее время (также не удалось найти способ получить текущее представление).

Как эффективно фильтровать даты в соответствии сдля просмотра?

Я имею в виду:

  • В режиме просмотра по месяцам: фильтр по каждому дню
  • В режиме просмотра по годам: фильтр только по годам / месяцам
  • В многолетнем просмотре: фильтр только по годам

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...