如何过滤完全匹配?
如果我对25915b8d-8b7c-41fe-b015-9b2e0a7d194b进行过滤,那么两者都
25915b8d-8b7c-41fe-b015-9b2e0a7d194b 1225915b8d-8b7c-41fe-b015-9b2e0a7d194b
被返回。我想要完全匹配但不包含。
applyFilter(filterValue: string) {
filterValue = filterValue.trim();
filterValue = filterValue.toLowerCase();
this.dataSource.filter = filterValue;
}
答案 0 :(得分:0)
您应该使用 MatTableDataSource
的 filterPredicate 属性https://material.angular.io/components/table/api#MatTableDataSource
在初始化this.dataSource之后(我假设“ 25915b8d-8b7c-41fe-b015-9b2e0a7d194b”是T上名为“ uuid”的字段);
this.dataSource.filterPredicate = function(data: T, filterValue: string) {
return data.uuid
.trim()
.toLocaleLowerCase() === filterValue;
};
您应该用MatTableDataSource<T>
上使用的任何类型替换T
还请记住;
默认情况下,每个数据对象都将转换为其属性的字符串,如果过滤器在该字符串中至少出现一个,则返回true。
这意味着,通过使用上面的filterPredicate,您将仅基于数据的一个字段来过滤数据源。如果您的用例需要过滤多个字段,那么您应该相应地使用filterPredicate函数。