Angular 2:如何在不向用户显示标签的情况下从 JSON 响应呈现 HTML? [复制]

Posted

技术标签:

【中文标题】Angular 2:如何在不向用户显示标签的情况下从 JSON 响应呈现 HTML? [复制]【英文标题】:Angular 2: How do you render HTML from a JSON response without displaying the tags to the user? [duplicate] 【发布时间】:2016-04-28 10:09:06 【问题描述】:

编辑:澄清一下,我的问题是关于 Angular 2,而不是 1。


我有一个类似这样的组件模板:

<div> post.body </div>

对象是这样的:


    "title": "Some Title",
    "body": "<p>The <em>post body</em>.</p>"

而不是像这样渲染段落:

帖子正文

它显示:

"&lt;p&gt;The &lt;em&gt;post body&lt;/em&gt;.&lt;/p&gt;"

由于这是一项常见的任务,我寻找了一个像 post.body | safe 这样的内置管道,但没有找到。

有没有一种简单的方法可以让它发挥作用?有没有一种安全的方法可以让它发挥作用?

【问题讨论】:

你用什么把 json 添加到你的页面中? 请参阅:***.com/questions/17826758/… 和/或***.com/questions/23747474/… 或***.com/questions/20436579/…,或google.com &lt;div [innerhtml]="post.body"&gt;&lt;/div&gt; 用于 Angular2... @PhiterFernandes - JSON 来自一个服务,该服务目前从模拟数据中获取它,类似于 angular.io 教程中的做法。 【参考方案1】:

在 Angular2 中,您可以使用 property binding 访问 DOM 元素的属性,在您的情况下:

<div [innerHTML]="post.body"></div>

【讨论】:

但你不应该那样做angular.io/docs/ts/latest/guide/security.html#!#xss @CSchulz 那么安全的方法应该是什么 只有在确定来源可信时才应该这样做。 如果您在 Angular 4 中使用 [innerHTML]="yourHtml" 绑定到 html,它将清理字符串并删除任何 @ibgib 是的,你不再需要它了,Angular 现在默认清理 html 内容:angular.io/guide/security#sanitization-and-security-contexts

以上是关于Angular 2:如何在不向用户显示标签的情况下从 JSON 响应呈现 HTML? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在不向用户显示堆栈跟踪的情况下处理 servlet 过滤器中的错误状态?

如何在不显示窗口的情况下运行 PowerShell 脚本?

如何在不向它们提供 ID 的情况下更改按钮单击时 textview 的可见性?

在不向行/列添加值的情况下计算 SUM?

Ruby Rspec:在不向源添加访问器的情况下测试实例变量

在不向撤消堆栈添加撤消命令的情况下更改 QTextEdit