如何防止Angular管道运行

时间:2018-08-06 14:16:18

标签: javascript angular typescript single-page-application

我有一个带有自定义管道的Angular 5 SPA,可以使用RegExp替换文本。 问题是:可能有数百个字段要转换,并且在页面上的每次更改时,管道都会重新启动。

constructor(private sanitizer: DomSanitizer) {}

transform(value: any, query: string, searching: boolean): SafeHtml {
  console.log('.'); // to count

  if (!searching) {
    return value;
  }

  const re = new RegExp(query, 'gi');
  const html = value.toString();

  if (!_.isEmpty(query) && query.length > 2) {
    const result = html.replace(re, `<span class='mark' id='${uuid()}'>${query}</span>`);

    return this.sanitizer.bypassSecurityTrustHtml(result);
  }

  return value;
}

如何防止这种行为?我想更改我的更改检测策略或下一个循环的时间延迟。 “查询”来自一个文本框,在按下按键时,管道启动,并且我无法在几秒钟内输入更多字符。

如果有一种不使用管道的简单方法,那么我会接受。任务是像浏览器内置的CTRL-F + F3一样实现页面搜索,但仅用于内容字段。表标题,按钮等中没有匹配项。

如果没有办法,我可以将所有内容字段标记为“可搜索”,并在无管道渲染后开始替换。但是,当我更改查询时,必须重新设置所有标记。

0 个答案:

没有答案