Angular 6中的管道突出显示问题

时间:2018-09-18 11:13:18

标签: angular typescript

我有一个管道,突出显示了搜索到的关键字

enter image description here

但是当我清除输入表单时,我的管道会突出显示单词中的每个字母。如何解决?在这种情况下,如果文本为空

enter image description here

代码打字稿

@Pipe({
name: 'highlight'
 })

export class HighlightSearch implements PipeTransform {

public transform(value: string, predicate: string): string {

return value.replace(new RegExp(predicate, 'gi'), `<mark>${predicate}</mark>`);
   }
}

HTML

<tbody>
    <tr *ngFor="let Slide of SlidesFinded;">
      <td>{{ Slide.idSlide }}</td>
      <td>NULL</td>
      <td [innerHTML]="Slide.textSlide | highlight: text"></td>

    </tr>
  </tbody>

1 个答案:

答案 0 :(得分:4)

空正则表达式匹配每个字符串,因此将其突出显示。将此条件添加为在“关键字”为空并且没有问题的情况下不应用突出显示的条件。

public transform(value: string, predicate: string): string {
if(!predicate){
    return value;
}
return value.replace(new RegExp(predicate, 'gi'), `<mark>${predicate</mark>`);
   }

或类似的东西。