角度2管道替换为源值

时间:2017-02-25 13:41:56

标签: 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.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就在那里,因为管道从另一个管道获取输出。

0 个答案:

没有答案