完全匹配的 Mat table 文件管理器

Mat table filer on exact match

如何过滤完全匹配?

如果我对 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;

}

你应该使用 filterPredicate 属性 of MatTableDataSource

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;
};

您应该将 T 替换为您在 MatTableDataSource<T>

上使用的任何类型

还请记住;

By default, each data object is converted to a string of its properties and returns true if the filter has at least one occurrence in that string.

这意味着,通过使用上面的 filterPredicate,您将仅根据数据的一个字段过滤数据源。如果您的用例需要过滤多个字段,那么您应该相应地采用您的 filterPredicate 函数。