数据表过滤器逻辑更改未反映

时间:2018-07-10 08:09:18

标签: angular angularjs-directive angular2-directives

我正在尝试更改角度数据表中的滤波器逻辑

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并重新编译了该应用程序。这些变化没有反映出来。

有人请给点灯光吗?

1 个答案:

答案 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()))
      );
  }
}