我正在使用数据源来存储我的所有数据。到目前为止,我在执行搜索时一直使用标准过滤器。但是,现在我想使用“ 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;
}
答案 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)