Javascript Angular 2-如何有选择地绑定包含HTML的字符串(一些允许的标记)

Javascript Angular 2-如何有选择地绑定包含HTML的字符串(一些允许的标记),javascript,html,angular,bind,Javascript,Html,Angular,Bind,我正在我的应用程序中实现一些简单的搜索和突出显示 因此,我的模板中包含以下内容: <span>{{myContent}}</span> 我想做的是提供搜索和突出显示功能,所以我的第一个想法是使用regexp替换并将我的内容转换为类似的内容(假设搜索备忘录): 然后在我的模板中使用如下内容: <span *ngFor="let chunk of chunks"> <span *ngIf="chunk.html" [innerHTML]="chunk.

我正在我的应用程序中实现一些简单的搜索和突出显示

因此,我的模板中包含以下内容:

<span>{{myContent}}</span>
我想做的是提供搜索和突出显示功能,所以我的第一个想法是使用regexp替换并将我的内容转换为类似的内容(假设搜索备忘录):

然后在我的模板中使用如下内容:

<span *ngFor="let chunk of chunks">
  <span *ngIf="chunk.html" [innerHTML]="chunk.content"></span>
  <span *ngIf="!chunk.html">{{chunk.content}}</span>
</span>

{{chunk.content}
但我担心这可能会破坏我的应用程序的性能。我的应用程序实际上显示了一个巨大的数据树,我在其中对每个节点执行搜索,因此该节点组件有数百个副本,每个副本都呈现一段数据(可能用搜索结果突出显示)

希望我很好地描述了这个问题,没有压倒任何人


谢谢

您可以使用angular提供的
DomSanitizer
。比如说

从“@angular/platform browser”导入{domsanizer}”;
myHtml:any='某些段落

'; 构造函数(专用消毒器:DomSanitizer){ this.myHtml=this.sanitizer.bypassSecurityTrustHtml(this.myHtml); }


这是一些基本的示例,说明了如何使HTML信任适用于angular,您可以在您的场景中使用此方法。

您可以使用angular提供的
DomSanitizer
。比如说

从“@angular/platform browser”导入{domsanizer}”;
myHtml:any='某些段落

'; 构造函数(专用消毒器:DomSanitizer){ this.myHtml=this.sanitizer.bypassSecurityTrustHtml(this.myHtml); }


这是一些基本示例,说明了如何使HTML信任适用于angularjs,您可以在场景中使用此方法。

对2+非angularjs使用angular标记对2+非angularjs使用angular标记
:param: (b (r :a:sync <span style='background-color: yellow'>memo</span> :o :idf:3.09 kg;/g/1<>11bwnh :score:0.3
chunks = searchAndHighlight(myContent);
// chunks would be:
// [
//  {content: ':param: (b (r :a:sync ', html: false},
//  {content: '<span style='background-color: yellow'>memo</span>', html: true},
//  {content: ' :o :idf:3.09 kg;/g/1<>11bwnh :score:0.3', html: false},
// ]
<span *ngFor="let chunk of chunks">
  <span *ngIf="chunk.html" [innerHTML]="chunk.content"></span>
  <span *ngIf="!chunk.html">{{chunk.content}}</span>
</span>