如何在 Angular 中使用 innerHTML 属性绑定

简介: 如何在 Angular 中使用 innerHTML 属性绑定

本文介绍了Angular2中如何使用innerHTML属性渲染HTML,包括其在处理混合文本和HTML元素时的差异,以及如何防止XSS攻击,通过DomSanitizer限制安全元素和属性。

简介

Angular 2+ 支持使用 [innerHTML] 属性绑定来渲染 HTML。如果你使用插值,它会被视为字符串。

本文将介绍如何使用 [innerHTML] 以及一些注意事项。

先决条件

如果你想跟着本文学习,你需要:

  • 对 Angular 插值和属性绑定有一定了解会更有帮助。

第一步 — 使用 innerHTML

假设你正在处理一个包含纯文本和 HTML 实体和元素混合的字符串的组件:

export class ExampleComponent {
  htmlStr: string = 'Plain Text Example &amp; <strong>Bold Text Example</strong>';
}

让我们考虑一个在这个字符串上使用插值的模板:

<div>{{ htmlStr }}</div>

编译后,这段代码将产生以下结果:

Plain Text Example & Bold Text Example

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] 值不能使用 </code> 和 <code><style></code> 标签以及 <code>style</code> 属性。在选择使用 <code>[innerHTML]</code> 时要牢记这一限制。</div><h3 id="z5QGL"><a name="t4"></a><a></a>结论</h3><div>在本文中,你了解了 Angular 2+ 中 <code>[innerHTML]</code> 属性绑定的用法。它将渲染字符串中包含的 HTML 标记。</div><div>如果你想了解更多关于 Angular 的知识,请查看我们的 Angular 专题页面,了解练习和编程项目。</div><div id="__reading__mode__content_end_mark_container_id" style="background-color: #FCFCFC;"><br /></div>

目录
相关文章
|
4月前
|
编译器 API 开发者
Angular Component ɵcmp 属性的含义和使用场合介绍
Angular Component ɵcmp 属性的含义和使用场合介绍
|
4月前
|
API 开发者
Angular Component class ɵfac 的属性介绍
Angular Component class ɵfac 的属性介绍
|
11月前
|
JavaScript 数据安全/隐私保护 开发者
Angular Component Class 成员属性默认的访问权限控制
Angular Component Class 成员属性默认的访问权限控制
|
10月前
|
JavaScript 编译器 开发者
关于 Angular 应用的 ng-version 属性
关于 Angular 应用的 ng-version 属性
|
11月前
|
JavaScript
Angular Component 属性绑定 target 和 attr.target 的区别
Angular Component 属性绑定 target 和 attr.target 的区别
|
11月前
Angular Component 里 get 关键字修饰的属性的用法
Angular Component 里 get 关键字修饰的属性的用法
|
11月前
Angular Component 里使用 const 和 readonly 修饰的属性有什么区别
Angular Component 里使用 const 和 readonly 修饰的属性有什么区别
|
11月前
|
JavaScript 编译器
Angular 应用 tsconfig.json 文件里的 typeRoots 属性讲解
Angular 应用 tsconfig.json 文件里的 typeRoots 属性讲解
|
11月前
|
JavaScript 前端开发 应用服务中间件
关于 Angular 部署以及 index.html 里 base hRef 属性的关联关系
关于 Angular 部署以及 index.html 里 base hRef 属性的关联关系
|
14天前
|
缓存 JavaScript 前端开发
Angular 应用打包和部署
Angular 应用打包和部署
47 1