Угловой материал вложенных фильтров лучшие практики - PullRequest
0 голосов
/ 08 октября 2018

Я получил источник данных 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;
};

Это прекрасно работает, но для меня это не лучшее решение для практики.У вас есть предложения по улучшению?Не было бы полезно создать общее решение для вложенных фильтров?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...