对ngx-datatable

时间:2018-12-04 12:12:54

标签: angular ngx-datatable

我正在使用Angular 6 ngx-datatable 在表中显示数据。

如果以前知道这些列,则过滤器的工作原理类似于

updateFilter(event) {
    const val = event.target.value.toLowerCase();
    // filter our data
    // update the rows
    this.rows = this.temp.filter(function (d) {
      if (d.user.name.toLowerCase().indexOf(val) !== -1 || !val) {
        return d.user.name.toLowerCase().indexOf(val) !== 1 || !val;
      } else if (d.user.email.toLowerCase().indexOf(val) !== -1 || !val) {
        return d.user.email.toLowerCase().indexOf(val) !== -1 || !val;
      }
    });
  }

但是在我的情况下,列是动态的并且随着数据而变化。

这是我从数据中提取列名的方法

 private _processData() {
    const columns = Object.keys(this.data.data[0]);

    this.columnsList = columns;

    for (const c of columns) {
      this.columns.push({
        prop: c,
        name: c.toUpperCase()
      });
    }

    this.rows = this.data.data;
    this.temp = this.data.data;
  }

现在,我想修改updateFilter()函数以用于动态列列表 columnsList 。这就是我所做的。

  updateFilter(event) {
    const val = event.target.value.toLowerCase();
    const columns = this.columnsList;
    // filter our data
    // update the rows
    this.rows = this.temp.filter(function (d) {
      for (const c of columns) {
        if (d[c].toLowerCase().indexOf(val) !== -1 || !val) {
          return d[c].toLowerCase.indexOf(val) !== -1 || !val;
        }
      }
    });
  }

但是当搜索数据时,它会显示类似错误

ERROR TypeError: "d[c].toLowerCase.indexOf is not a function"

如何使用动态列名来生成updateFilter()方法以使其有效工作。

0 个答案:

没有答案