数据表过滤器逻辑更改未反映 [英] Datatable filter logic change not reflecting
本文介绍了数据表过滤器逻辑更改未反映的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试更改角度数据表中的过滤器逻辑
I am trying to change the filter logic in angular datatable
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 并重新编译了应用程序.这些变化没有反映出来.
I kept a console.log and recompiled the application. The changes are not reflecting.
有人请说明一下吗?
推荐答案
您缺少一个 else
语句来涵盖您的项目为空或空/未定义这一事实.
You are lacking an else
statement that covers the fact that your items are empty or null/undefined.
此外,您可以像这样简化全文搜索:
Also, you can simplify your full text search like this :
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()))
);
}
}
这篇关于数据表过滤器逻辑更改未反映的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文