完全匹配的垫子表格过滤器

时间:2019-05-17 14:53:10

标签: angular7 angular-material2

如何过滤完全匹配?

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

}

1 个答案:

答案 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函数。