突出显示匹配模式的路径(Angular 7)
Highlight paths matching patterns (Angular 7)
我有一个路径列表,其中可以包含通配符。 filtering/highlighting 路径匹配包含通配符的路径的最佳方法是什么?这样当您还有路径“/server/*”f.ex 时,路径“/server/test/block”将被标记。到目前为止,我已经尝试将 .filter 与 .contains 嵌套,并检查数组是否大于 1。但是,这只会给出精确匹配,而且我没有找到将相同的 class 添加到的好方法那些彼此匹配的人。
为了 运行 这个功能,我在我的 mat-cell 上测试了 [innerHTML]-selector,但是这个功能 运行 很多 次。我还在 mat-cell 内的跨度上使用 [class.someName]-选择器进行了测试,但这也会多次调用该函数。任何关于我应该看哪个方向的指示都将不胜感激。
数据显示使用 material table。
我最终向数据集添加了一个布尔值,'matchesPattern'。我找到了一个 npm module named 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] 一起使用,以将 class 添加到路径周围的跨度中。它们现在以不同的颜色突出显示。
我有一个路径列表,其中可以包含通配符。 filtering/highlighting 路径匹配包含通配符的路径的最佳方法是什么?这样当您还有路径“/server/*”f.ex 时,路径“/server/test/block”将被标记。到目前为止,我已经尝试将 .filter 与 .contains 嵌套,并检查数组是否大于 1。但是,这只会给出精确匹配,而且我没有找到将相同的 class 添加到的好方法那些彼此匹配的人。
为了 运行 这个功能,我在我的 mat-cell 上测试了 [innerHTML]-selector,但是这个功能 运行 很多 次。我还在 mat-cell 内的跨度上使用 [class.someName]-选择器进行了测试,但这也会多次调用该函数。任何关于我应该看哪个方向的指示都将不胜感激。
数据显示使用 material table。
我最终向数据集添加了一个布尔值,'matchesPattern'。我找到了一个 npm module named 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] 一起使用,以将 class 添加到路径周围的跨度中。它们现在以不同的颜色突出显示。