【发布时间】:2018-09-29 13:54:51
【问题描述】:
我想建立一个有角度的搜索框,它会返回项目数组,并在结果数组中突出显示 searchedTerm。
例如:在 Chrome 中,如果您正在搜索任何文本,它将以浅黄色背景突出显示。与此类似。
我创建了两个管道,一个用于过滤结果,另一个用于突出显示在搜索结果中的术语。
但我收到错误replace is not a function。
另外,两个管道可以合并为一个吗?
highlight.pipe.ts
transform(list: any, searchText: string): any[] {
if (!list) { return []; }
if (!searchText) { return list; }
const re = new RegExp(searchText, 'gi');
const value = list.replace(re, "<span class='yellow'>" + searchText + "</span>" );
return list;
}
在模板中使用管道
<div class="card" *ngFor="let item of list | search: searchedTerm | highlight: searchedTerm">
【问题讨论】:
-
您可以在您尝试执行
replace的位置添加代码吗?或者只是添加管道中的所有代码 -
我已经给出了stackblitz url,你可以在其中找到完整的代码。并且还在这里添加了代码。
-
对不起,我错过了。您最好使用
directive而不是pipe。这是一个您可以在 GitHub github.com/arthurvaverko/ngx-highlight 中查看的示例
标签: angular angular6 angular-pipe