Javascript 角度2管道替换为源值

Javascript 角度2管道替换为源值,javascript,angular,Javascript,Angular,我编写了以下管道以突出显示匹配: import {PipeTransform, Pipe} from '@angular/core'; @Pipe({ name: 'highlight' }) export class HighlightPipe implements PipeTransform { transform(values: any, filter: string): any[] { let highlightedValues = []; values.forE

我编写了以下管道以突出显示匹配:

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>`)
    };
  }
}
从'@angular/core'导入{PipeTransform,Pipe};
@管道({name:'highlight'})
导出类HighlightPipe实现PipeTransform{
转换(值:any,过滤器:string):any[]{
让highlightedValues=[];
values.forEach(函数(条目){
让结果=过滤器?HighlightPipe.doHighlight(条目,过滤器):条目;
过滤器?highlightedValues.push(结果):highlightedValues.push(输入);
});
返回高亮显示的值;
}
私有静态doHighlight(条目:any,过滤器:string):any{
返回{
title:entry.title.replace(新的RegExp(filter,'gi'),`${filter}`),
content:entry.content.replace(新的RegExp(filter,'gi'),`${filter}`)
};
}
}
管道工作良好,高亮度匹配。当我搜索大写字符串时,问题就出现了。大写字符串替换源文本不需要的行为

例如:我搜索
数组
字符串,源字符串(
数组
)被替换为
数组
字符串。如何使管道返回
数组
而不是
数组


另外,
highlightedValues
存在,因为管道从另一个管道获取输出。

您可以在输出中使用匹配的字符串,而不是实际的
filter
值。您可以显示一些示例吗?只需将
${filter}
(特定值的TypeScript插值)替换为
$&
(匹配的regex插值)。请阅读它,例如,可能的重复,然后接受重复的建议,该建议已经有了答案;这不是TypeScript或Angular 2所特有的。您可以在输出中使用匹配的字符串,而不是实际的
过滤器
值。是否可以显示一些示例?只需替换
${filter}
(特定值的TypeScript插值)与
$&
(匹配的regex插值)。阅读它,例如,可能重复的,然后接受重复的建议,它已经有了答案;这不是特定于TypeScript或Angular 2。