我正在使用 WYSIWYG 编辑器(CKEditor)并尝试使用 Angular 5 呈现内容。
我想弄清楚的是在 Angular 5 中使用 DomSanitizer 的正确方法。我面临的问题是超链接在生成的经过消毒的 HTML 中不起作用(不可“点击”)。
我正在使用以下 Typescript 代码返回一个 safeHtml 内容:
public getSafeContent(): SafeHtml {
return this.sanitizer.bypassSecurityTrustHtml(this.page.content);
}
Run Code Online (Sandbox Code Playgroud)
并以这种方式在我的模板中使用它:
<div [innerHTML]="getSafeContent()"></div>
Run Code Online (Sandbox Code Playgroud)
这将呈现具有完整内联样式的 HTML,但超链接将不起作用。
我尝试这样做:
public getSafeContent(): SafeHtml {
return this.sanitizer.sanitize(SecurityContext.HTML, this.page.content);
}
Run Code Online (Sandbox Code Playgroud)
这导致超链接实际上有效,但内联样式无效。
有没有办法让样式和超链接都与经过消毒的内容一起使用?
更新
这是页面在 Chrome 开发工具中的样子:
<div _ngcontent-c22="" class="row">
<div _ngcontent-c22="" class="col-lg-12">
<div _ngcontent-c22="">
<p><a href="http://www.google.com">google</a></p>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
并且谷歌链接不可点击。