Выделите пути, соответствующие шаблонам (Angular 7) - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть список путей, которые могут содержать символы подстановки.Каков наилучший подход для фильтрации / выделения путей, соответствующих путям, содержащим подстановочные знаки?Чтобы путь «/ server / test / block» был отмечен, когда у вас также есть путь «/ server / *» f.ex.До сих пор я пытался вложить .filter с .contains и проверить, больше ли массив массива 1. Однако это дало бы только точные совпадения, и я не нашел хорошего способа добавить тот же класс к тем, которые совпали друг с другом..

Чтобы запустить эту функцию, я протестировал селектор [innerHTML] на своей мат-ячейке, но функция была запущена много раз.Я также протестировал использование [class.someName] -selector на промежутке внутри mat-cell, но это также вызвало бы функцию много-много раз.Будут признательны за любые указатели, в каком направлении я должен смотреть.

Данные показаны с использованием таблицы материалов.

1 Ответ

0 голосов
/ 21 ноября 2018

В итоге я добавил логическое значение в набор данных 'matchPattern'.Я нашел модуль npm с именем minimatch , который дает логическое значение в зависимости от совпадения с шаблоном или нет.

import minimatch from 'minimatch';

markMatchingPaths() {
  this.dataSource.data.map(p => p.matchesPattern = false);
  const wildcards = this.currentDataSource.data.filter(w => w.path.includes('*'));

  wildcards.forEach(w => {
    this.dataSource.data.forEach(p => {
      const res = minimatch(p.path, w.path);
      if (res) {
        p.matchesPattern = true;
      }
    });
  });
}

Я использовал указанное логическое значение с [class.someName], чтобы добавить класс в spanокружить пути.Теперь они выделены другим цветом.

...