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();