使用 FilterPredicate 创建自定义过滤器来过滤 DataSource

Create a custom filter using FilterPredicate to filter DataSource

我正在使用数据源来存储我的所有数据。到目前为止,我在执行搜索时一直使用标准过滤器。但是,现在我想使用 "OR" 运算符执行搜索。

示例:

{name : john, age : 25, work : driver}

{name : peter, age : 28, work : writer}

{name : james, age : 39, work : athlete}

如果我输入 "john james",我希望过滤功能得到第 1 行和第 3 行。

我很确定我们必须使用 filterPredicate,但我真的不明白如何 create/use 那些,而且我找不到任何 decent/working 示例

文档除了给我一个原型外没有多大帮助:

filterPredicate: ((data: T, filter: string) => boolean);

你们有任何想法或代码示例如何实现吗?

下面是我的基本搜索函数现在的样子:

  applyFilter(filterValue: string) {
    filterValue = filterValue.toLowerCase();
    this.dataSource.filter = filterValue;
  }
const users = [
  {name : 'john', age : 25, work : 'driver'},
  {name : 'peter', age : 28, work : 'writer'},
  {name : 'james', age : 39, work : 'athlete'}
]

const query = "john james";

const filtered = users.filter(e => query.includes(e.name));

这应该有效:)

使用数据源:

this.dataSource.filterPredicate = (data, filter) => filter.includes(data.name)