角材料嵌套式过滤器最佳实践

时间:2018-10-08 17:49:46

标签: javascript angular typescript angular-material

我得到了一个具有此模型对象的数组的Angular Material数据源:

export class Permission[] {
  name: string;
  content_type: {
    id: number;
    name: string;
  };
  codename: string;
}

所以数据源实际上就像 Permission [] [] 一样,我为此构建了以下 filterPredicate

this.permissionsDataSource.filterPredicate = (data, filter: string) => {
  let dataStr = '';
  data.forEach(x => {
    Object.keys(x).forEach(y => {
      if (x[y] !== null && typeof x[y] === 'object') {
        Object.keys(x[y]).forEach(z => {
          dataStr += y[z];
        });
      } else {
        dataStr += x[y];
      }
    });
  });
  const transformedFilter = filter.trim().toLowerCase();
  return dataStr.indexOf(transformedFilter) !== -1;
};

它的运行效果很好,但对我而言,这似乎并不是最佳实践解决方案。您对我有什么改善建议吗?为嵌套过滤器构建通用解决方案是否有帮助?

0 个答案:

没有答案