我有一个使用筛选条的Mat Table。我以前没有使用过filterPredicate函数,表将根据数据源中的所有列和数据进行过滤。
此后,我添加了以下内容:
ngAfterViewInit(): void {
this.dataSource.filterPredicate = (data, filter: string): boolean => {
if (this.columnSearch === "(All)") {
return;
}
if (!data[this.columnSearch]) {
data[this.columnSearch] = "";
}
return data[this.columnSearch]
.toString()
.toLowerCase()
.includes(filter);
};
}this.columnSearch变量双向绑定到我的select控件。此控件定义当前正在筛选的列。我希望"(All)"选择从所有列中进行过滤。我需要一种方法来禁用filterPredicate时,所有列都被选中。
发布于 2021-12-15 20:46:28
数据源FilterPredicate表达式
// Filter Predicate Expression to perform Multiple KeyWord Search
this.dataSource.filterPredicate = ((data: DeviceInventory, filter) => {
const a = !filter.uniqueNumber || data.uniqueNumber.trim().toLowerCase().includes(filter.uniqueNumber);
const b = !filter.model || data.modelCode==filter.model;
const c = !filter.modelType || data.modelType == filter.modelType;
const d = !filter.serialNumber || data.serialNumber.trim().toLowerCase().includes(filter.serialNumber);
return a && b && c && d;
}) as (DeviceInventory, string) => boolean;
// Filter Controls FormValue change event
this.filterForm.valueChanges.subscribe(value => {
this.dataSource.filter = value;
});https://stackoverflow.com/questions/60571419
复制相似问题