Я использую Angular 7 с Typescript и пытаюсь создать фильтр даты для списка. Список может быть очень большим. Я много читал, и я нашел решение трубы. Проблема в том, что когда я меняю аргументы фильтра, ngFor не обновляется, а также я прочитал, что Pipe не подходит для очень длинных списков.
Мой HTML:
<tr *ngFor="let x of sessions | callback: filterByDate" (click)="view(x)">
Мой тс:
private filterByDate = (session: Session) => {
if (this.fromDateFilter && this.fromDateFilter > session.Date) {
return false;
}
if (this.toDateFilter && this.toDateFilter < session.Date) {
return false;
}
return true;
}
Класс трубы:
import { PipeTransform, Pipe } from '@angular/core';
@Pipe({
name: 'callback',
pure: false
})
export class CallbackPipe implements PipeTransform {
transform(items: any[], callback: (item: any) => boolean): any {
if (!items || !callback) {
return items;
}
return items.filter(item => callback(item));
}
}
У меня есть угловой DatePicker, который изменяет параметры this.fromDateFilter и this.toDateFilter. В угловых 1.6 это было очень легко. Каждый раз, когда я меняю функцию фильтра, она выполнялась. Здесь ничего не происходит.
Спасибо!