我写了以下管道以突出显示匹配:
import {PipeTransform, Pipe} from '@angular/core';
@Pipe({ name: 'highlight' })
export class HighlightPipe implements PipeTransform {
transform(values: any, filter: string): any[] {
let highlightedValues = [];
values.forEach(function(entry) {
let result = filter ? HighlightPipe.doHighlight(entry, filter) : entry;
filter ? highlightedValues.push(result) : highlightedValues.push(entry);
});
return highlightedValues;
}
private static doHighlight(entry:any, filter:string):any {
return {
title: entry.title.replace(new RegExp(filter, 'gi'), `<span class="highlight">${filter}</span>`),
content: entry.content.replace(new RegExp(filter, 'gi'), `<span class="highlight">${filter}</span>`)
};
}
}
管道工作正常,hihlights匹配。当我搜索大写字符串时,会出现问题。大写字符串替换源文本不想要的行为。
例如:我搜索Array
字符串,源字符串(array
)被Array
字符串替换。如何使管道返回array
而不是Array
?
P.S。 highlightedValues
就在那里,因为管道从另一个管道获取输出。