javascript - 突出显示搜索文本 - angular 2

标签 javascript angular html typescript

信使根据用户提供的输入显示搜索结果。需要高亮显示被搜索的词,同时显示结果。 这些是使用的 html 和组件。

Component.html

 <div *ngFor = "let result of resultArray">
<div>Id : result.id </div>
<div>Summary : result.summary </div>
<div> Link : result.link </div>
</div>

Component.ts

resultArray : any = [{"id":"1","summary":"These are the results for the searched text","link":"http://www.example.com"}]

此 resultArray 是通过将搜索文本作为输入发送到后端服务中获取的。根据搜索文本,获取结果。需要高亮显示搜索到的文字,类似于google搜索。请找截图,

enter image description here

如果我搜索“member”一词,则会突出显示出现的“member”一词。如何使用 Angular 2 实现相同的效果。请就此提出一个想法。

最佳答案

您可以通过创建一个管道并将该管道应用到 ngfor 中数组的 summary 部分来做到这一点。以下是 Pipe 的代码:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
    name: 'highlight'
})

export class HighlightSearch implements PipeTransform {

    transform(value: any, args: any): any {
        if (!args) {return value;}
        var re = new RegExp(args, 'gi'); //'gi' for case insensitive and can use 'g' if you want the search to be case sensitive.
        return value.replace(re, "<mark>$&</mark>");
    }
}

然后在标记中将它应用于这样的字符串:

<div innerHTML="{{ str | highlight : 'search'}}"></div>

将“搜索”替换为您要突出显示的词。

希望这会有所帮助。

关于javascript - 突出显示搜索文本 - angular 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44961759/

相关文章:

javascript - 重定向 Url 不工作并得到 No 'Access-Control-Allow-Origin' header Error

javascript - 使用 push(data) Angularfire2 时处理错误

javascript - 将 Canvas 转换为图像不包括 Canvas 上的图像

html - SVG 图标不工作

javascript - 如果列表/数组不为空,如何禁用 Angular 中的按钮?

javascript - 如何重置/清除 x-editable 表中的所有过滤器(select2、select、input)?

javascript - 什么是内容下载 Chrome 调试工具?

angular - DOMException: 无法在 'importScripts' 上执行 'WorkerGlobalScope' : 'http://localhost:4200/BlinkCardWasmSDK.js' 处的脚本无法加载

javascript - 如何创建一个全为零的 nxn 矩阵(数组的数组)?

angular - 如何在其他项目中重用 Angular 模块