【问题标题】:HTML webpage with all css in Angular appAngular 应用程序中包含所有 css 的 HTML 网页
【发布时间】:2018-12-10 12:32:10
【问题描述】:

我是 Angular 新手,正在尝试解决有关在我的 Angular 应用程序中显示 HTML 网站的问题。 包含所有资源(如图像、css 文件等)的网页存储在外部服务器上。网站包含文本、图像、自己的样式、css 等。当我在网络浏览器中打开此类网站时,Everythink 工作正常。当我尝试在我的应用程序中显示此类页面时,很多问题都没有解决。

我使用innerHtml在应用程序中显示页面:

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

所有链接在显示之前都被更改为直接链接。显示文本和图像,但不应用样式。也许问题与指向 .css 的链接位于 块中的事实有关?

希望某人像我一样遇到问题并可以提供帮助:) 提前致谢。

【问题讨论】:

标签: html css angular typescript


【解决方案1】:

您可以尝试Sanitize(请阅读Angular 的文档,了解使用DomSanitizer 的含义)您的html,然后再将其放入html。

在您的组件中,注入 DomSanitizer,并绕过安全性:

safeContent;
constructor(private sanitizer:DomSanitizer){
    const content = "your html";
    this.safeContent = this.sanitizer.bypassSecurityTrustHtml(content);
}

在你的 html 中:

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

【讨论】:

  • 好的,现在它可以工作了,但是样式会应用于我应用程序中的所有元素。是否可以仅将这些样式应用于从服务器返回的 HTML?该应用程序由菜单、其他元素和窗口组成,我决定在其中显示来自服务器的 HTML。当我使用 DomSanitazer 时,HTML 内容以正确的方式显示,但样式也会应用于应用程序中的其他元素。
  • 根据我上面的评论。 ViewEncapsulation.Native 使其成为可能,并且样式不会应用于应用程序的其余部分。
猜你喜欢
  • 2023-03-31
  • 2019-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-21
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
相关资源
最近更新 更多