В моем приложении есть угловой указатель даты, для которого я использую matDatepickerFilter:
<input matInput [matDatepicker]="myDatePicker" [matDatepickerFilter]="dateFilter.bind(this)">
В функции dateFilter я проверяю, доступна ли дата на основе некоторых критериев:
dateFilter(d: Date) {
if (dateAvailable(d)) {
return true;
} else {
return false
}
}
Проблема в том, что этот же фильтр вызывается для каждого дня в каждом из представлений календаря (месяц, год и несколько лет).Например: при переходе от просмотра месяца к просмотру нескольких лет фильтр запускается 8766 раз (по одному на каждый день, каждый месяц, каждый год).
Это требует много времени и производительности, так какон проверяет каждый день годового или многолетнего просмотра, при этом достаточно будет проверить только год / месяц.Но так как matDatepickerFilter поддерживает только параметр даты, я не могу определить, какое представление фильтруется в настоящее время (также не удалось найти способ получить текущее представление).
Как эффективно фильтровать даты в соответствии сдля просмотра?
Я имею в виду:
- В режиме просмотра по месяцам: фильтр по каждому дню
- В режиме просмотра по годам: фильтр только по годам / месяцам
- В многолетнем просмотре: фильтр только по годам
Заранее спасибо!