Запустить угловой фильтр MatDataSource вручную - PullRequest
0 голосов
/ 14 мая 2019

Я получил поисковый запрос и выпадающий список, который показывает предопределенные фильтры. Для реализации фильтра я расширил Angular MatDataSource filter predicate с помощью специального фильтра:

this.invitationsDataSource.filterPredicate = (d: InvitationsApi, x: string) => {
  return this.recursiveSearch(d, x) && this.handleFilter(this.filterControl.value, d);
};

Теперь я подписываюсь на valueChanges поискового ввода и выпадающий список для правильной фильтрации данных:

this.searchControl.valueChanges.pipe(
    map(query => query.trim().toLowerCase()),
    map(query => this.invitationsDataSource.filter = query)
).subscribe();

и для фильтра выберите раскрывающийся список:

this.filterControl.valueChanges.pipe(
).subscribe();

Как я могу активировать фильтр сейчас? Проблема в том, что фильтр также должен запускаться, когда searchControl пуст и выбран filterControl. Есть ли способ вручную запустить фильтр Angular MatDataSource?

1 Ответ

0 голосов
/ 14 мая 2019

Если вам потребуется фильтрация в нескольких местах в вашем приложении, я бы порекомендовал многоразовый способ фильтрации, например mat-table-filter

В противном случае ручной запуск источника данных для фильтрации может быть достигнут с помощью настройки объекта фильтра. Вы можете установить значения через связывание клавиш для входов и selectionChange для компонента выбора mat.

...