Angular - 带有样式的 InnerHtml

Posted

技术标签:

【中文标题】Angular - 带有样式的 InnerHtml【英文标题】:Angular - InnerHtml with styles 【发布时间】:2019-12-21 22:43:07 【问题描述】:

我有这个……

const htmlVar = "<html>
<div style="display:flex">
<div>
  <h1>Hello World</h1>
</div>
</div>
";

在我的 html 上我有这个..

 <div [innerHtml]="htmlVar"></div>

它可以渲染一切,但样式:(

我尝试了这个链接的解决方案:style not working for innerhtml in Angular 2 Typescript

但它不起作用。可能是因为太旧了。

有什么线索吗?

【问题讨论】:

考虑使用DomSanitizer 来让它工作。 A div 不能包含 headbody,这是无效的 HTML 是的,@Liam..刚刚编辑过......但这不是问题。仍在继续 【参考方案1】:

正如@R.Richards 提到的,使用DomSanitizer:

import  DomSanitizer, SafeHtml  from '@angular/platform-browser';
.
.
.
htmlVar: SafeHtml;

constructor(protected _sanitizer: DomSanitizer) 
  this.htmlVar = this._sanitizer.bypassSecurityTrustHtml(`
    <html>
      <head></head>
      <body>
        <div style="display:flex; color: red;">
          <div>
            <h1>Hello World</h1>
          </div>
        </div>
      </body>
    </html>`);

我创建了一个stackblitz 来说明

另外,正如@liam 已经提到的,您不应该将&lt;html&gt;&lt;header&gt;&lt;body&gt; 标记为DIV 的孩子

【讨论】:

以上是关于Angular - 带有样式的 InnerHtml的主要内容,如果未能解决你的问题,请参考以下文章

Angular2 innerHtml 删除样式

Angular2 innerHtml绑定删除样式属性[重复]

Angular将样式标签添加到innerHTML

Angular中innerHTML标签的样式不起作用详解

带有变量 angular2 的 innerHTML

Ng2 innerHTML 如何允许样式属性? [复制]