前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
简介
Angular 2+ 支持使用 [innerHTML]
属性绑定来渲染 HTML。如果你使用插值,它会被视为字符串。
本文将介绍如何使用 [innerHTML]
以及一些注意事项。
先决条件
如果你想跟着本文学习,你需要:
- 对 Angular 插值和属性绑定有一定了解会更有帮助。
第一步 — 使用 innerHTML
假设你正在处理一个包含纯文本和 HTML 实体和元素混合的字符串的组件:
export class ExampleComponent {
htmlStr: string = 'Plain Text Example & <strong>Bold Text Example</strong>';
}
让我们考虑一个在这个字符串上使用插值的模板:
<div>{{ htmlStr }}</div>
编译后,这段代码将产生以下结果:
Plain Text Example & <strong>Bold Text Example</strong>
HTML 实体和 HTML 元素没有被渲染。
现在,让我们考虑一个在这个字符串上使用 [innerHTML]
属性绑定的模板:
<div [innerHTML]="htmlStr"></div>
重新编译后,这段代码将产生以下结果:
Plain Text Example & Bold Text Example
注意到 HTML 实体和 HTML 元素被渲染了。
第二步 — 理解限制
渲染 HTML 通常会引入跨站脚本攻击(XSS)的潜在风险。渲染的 HTML 可能包含恶意脚本,构成安全问题。
解决 XSS 的一种方法是限制 HTML 元素和属性的种类,只允许一组已知的“安全”元素和属性。
在幕后,[innerHTML]
使用 Angular 的 DomSanitizer
,它使用一组经过批准的 HTML 元素和属性。
这将限制你的 [innerHTML]
值不能使用 <script>
和 <style>
标签以及 style
属性。在选择使用 [innerHTML]
时要牢记这一限制。
结论
在本文中,你了解了 Angular 2+ 中 [innerHTML]
属性绑定的用法。它将渲染字符串中包含的 HTML 标记。
如果你想了解更多关于 Angular 的知识,请查看我们的 Angular 专题页面,了解练习和编程项目。