我有一个搜索输入和一个选择下拉列表,其中显示了预定义的过滤器。为了实现过滤器,我使用自定义过滤器扩展了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过滤器?
答案 0 :(得分:0)
如果您需要在应用程序中的多个位置进行过滤,我建议使用一种可重用的过滤方式,例如mat-table-filter
否则,可以通过设置过滤器对象来手动触发数据源进行过滤。 您可以通过输入的键盘绑定和为mat-select组件的selectionChange设置值。