angular 2 [innerHTML] 在 html 内渲染(不适用于 angular 2)[重复]
Posted
技术标签:
【中文标题】angular 2 [innerHTML] 在 html 内渲染(不适用于 angular 2)[重复]【英文标题】:angular 2 [innerHTML] render inside html (not working on angular 2 ) [duplicate] 【发布时间】:2017-08-25 19:02:51 【问题描述】:我正在使用 Angular 2,我尝试将我在变量 action.render 中的文本呈现为 html 代码:
<p *ngIf="action.isHtml">
<div [innerHTML]="action.content"></div>
</p>
<p *ngIf="!action.isHtml">
action.content
</p>
innerHTML 在我的情况下不起作用。 Angular 2还有其他方法吗? (这是我得到的)
这是我的 action.content
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>
</title>
<style type="text/css">
.cs2654AE3Atext-align:left;text-indent:0pt;margin:0pt 0pt 0pt 0pt
.csC8F6D76color:#000000;background-color:transparent;font-family:Calibri;font-size:11pt;font-weight:normal;font-style:normal;
</style>
</head>
<body>
<p class="cs2654AE3A"><span class="csC8F6D76">New claim declaration by HD team 00015371</span></p></body>
</html>
【问题讨论】:
在***.com/a/41089093/217408 上查看我关于 DomSanitizer 的回答 我看到这一行: 看起来你正在尝试进行双重插值。试试这个: . 【参考方案1】:将您的代码更改为此并重试:
<p *ngIf="action.isHtml">
<div [innerHTML]="action.content"></div>
</p>
<p *ngIf="!action.isHtml">
action.content
</p>
您应该使用innerHTML="action.content"
或[innerHTML]="action.content"
,但不能使用[innerHTML]="action.content"
【讨论】:
不行我已经试过了。 请您提供action.content。 我发布了一个答案,因为它太长了 工作正常,这解决了一个类似的错误 还要小心,这段代码对脚本注入攻击很有价值,应该清理。简而言之:action.content
可能包含一些恶意注入的脚本代码。以上是关于angular 2 [innerHTML] 在 html 内渲染(不适用于 angular 2)[重复]的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Angular 2+ innerHTML 在单个语句中多次调用方法,如何解决这个问题
Angular 2 错误:无法绑定到“innerhtml”,因为它不是已知的本机属性
使用 Angular 2+ [innerHTML] 添加包含样式属性的 html