我正在尝试更改角度数据表中的滤波器逻辑
export class FilterPipe implements PipeTransform {
keys = [];
transform(items: any, args: string): any {
console.log('Datatable test');
if (items != null && items.length > 0) {
let ans = [];
if (this.keys.length == 0) {
this.keys = Object.keys(items[0]);
}
for (let i of items) {
for (let k of this.keys) {
if (String(i[k]).toLowerCase().indexOf(args.toLowerCase()) >= 0) {
ans.push(i);
break;
}
}
}
return ans;
}
}
}
我保留了console.log并重新编译了该应用程序。这些变化没有反映出来。
有人请给点灯光吗?
答案 0 :(得分:0)
您缺少else
语句,该语句涵盖以下事实:您的项目为空或为空/未定义。
此外,您可以像这样简化全文搜索:
export class FilterPipe implements PipeTransform {
transform(items: Object[], args: string): any {
console.log('Datatable test');
if (!items || !items.length) { return []; }
return items
.filter(item => Object.keys(item)
.some(key => item[key].toLowerCase().includes(args.toLowerCase()))
);
}
}