Angular material 材料表-编程触发过滤器
在此之后,我知道我可以编写自己的Angular material 材料表-编程触发过滤器,angular-material,angular-material-table,Angular Material,Angular Material Table,在此之后,我知道我可以编写自己的this.dataSource.filterPredicate。只要我搜索一个字符串,它就可以正常工作。我想根据使用的状态进行额外筛选(=myFilterState) 我试着像这样使用谓词 this.dataSource.filterPredicate = (data: MyElement, filter: string) => data.myType.useState === this.myFilterState; 我面临的问题是,当我更改th
this.dataSource.filterPredicate
。只要我搜索一个字符串,它就可以正常工作。我想根据使用的状态进行额外筛选(=myFilterState
)
我试着像这样使用谓词
this.dataSource.filterPredicate =
(data: MyElement, filter: string) => data.myType.useState === this.myFilterState;
我面临的问题是,当我更改this.myFilterState
时,在我更改筛选器的字符串之前,不会重新计算筛选器。只要过滤器
保持为空,则不会触发过滤器预测
有没有办法手动触发它-尽管有过滤器
的值?在调查问题后,我发现只有当过滤器
有值时,源代码才会触发过滤器预测
。否则它不会被触发
因此,我提出了用
this.dataSource._filterData = (data: PropertyCompact[]) => {
this.dataSource.filteredData = data.filter(obj => this.dataSource.filterPredicate(obj, this.dataSource.filter));
return this.dataSource.filteredData;
};
如果发生更改,则需要触发更新
this.dataSource._updateChangeSubscription();