我找到了一个应用简单过滤器的例子。您可以在下面找到链接。
https://stackblitz.com/edit/angular-mat-table-inline-editing?file=app%2Ftable-editing-example.ts
正如您看到的代码,一旦您输入搜索关键字,就将其修剪为 'heliumLi' 为 'Helium Li'。如果我想根据每个单词查找怎么办?像“氦”或“锂”。如果列值具有“Helium”或“Li”,我必须进行 foreach 并显示结果。我如何做到这一点?
您可以通过定义自定义filterPredicate
函数来覆盖默认过滤行为(请参阅https://material.angular.io/components/table/overview#filtering)。对于您的示例,请尝试使用以下内容来匹配由空格分隔的精确符号或部分名称(均不区分大小写):
@Component({
selector: 'table-editing-example',
styleUrls: ['table-editing-example.css'],
templateUrl: 'table-editing-example.html',
})
export class TableEditingExample {
displayedColumns = ['position', 'name', 'weight', 'symbol', 'fav'];
dataSource = new MatTableDataSource(ELEMENT_DATA);
ngOnInit() {
this.dataSource.filterPredicate = this.filterObject;
}
applyFilter(filterValue: string) {
filterValue = filterValue.trim(); // Remove whitespace
filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches
this.dataSource.filter = filterValue;
}
filterObject(obj, filter): boolean {
return filter.split(' ').some(
item => obj.name.toLowerCase().indexOf(item) >= 0 || obj.symbol.toLowerCase() == item
);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句