使用FilterPredicate创建自定义过滤器,以过滤数据源

时间:2019-10-04 12:31:13

标签: angular typescript predicate

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

示例:

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

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

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

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

我很确定我们必须使用filterPredicate,但是我真的不知道如何创建/使用那些,而且我找不到任何合适的/可行的例子

除了给我一个原型之外,文档没有什么帮助:

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

你们有什么想法或代码示例如何实现这一目标吗?

这是我的基本搜索现在的功能:

  applyFilter(filterValue: string) {
    filterValue = filterValue.toLowerCase();
    this.dataSource.filter = filterValue;
  }

1 个答案:

答案 0 :(得分:0)

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)