当前位置: 首页 > 知识库问答 >
问题:

角度2-innerHTML样式

百里俭
2023-03-14

我从HTTP调用中获取了大量的HTML代码。我将HTML块放入一个变量中,并用[innerHTML]将其插入到我的页面中,但我不能为插入的HTML块设置样式。有没有人建议我怎样才能做到这一点?

@Component({selector: 'calendar',
template: '<div [innerHTML]="calendar"></div>',
providers:[HomeService], 
styles: [` 
h3 {color:red;}
`})

我想要样式化的HTML是变量“calendar”中包含的块。

共有1个答案

王辉
2023-03-14

更新2::slotted

::slotted现在受到所有新浏览器的支持,并且可以与ViewEncapsulation.Shadowdom一起使用

https://developer.mozilla.org/en-us/docs/web/css/::slotted

Angular将所有类型的CSS类添加到HTML中,它添加到DOM中,以模拟阴影DOM CSS封装,以防止组件中的样式溢出。Angular还重写您添加的CSS以匹配这些添加的类。对于使用[innerHTML]添加的HTML,这些类不会添加,而且重写的CSS不匹配。

作为变通办法

/* :host /deep/ mySelector { */
:host ::ng-deep mySelector { 
  background-color: blue;
}
  • 对于添加到index.html
  • 的CSS
/* body /deep/ mySelector { */
body ::ng-deep mySelector {
  background-color: green;
}

>>(以及等效的/deep//deep/与SASS一起工作更好)和::shadow在2.0.0-Beta.10中添加了。它们类似于影子DOM CSS组合子(不推荐使用),并且只使用封装:viewencapsulation.emulated,这是Angular2中的默认值。它们可能还与viewencapsulation.none一起工作,但由于它们不是必需的,因此只会被忽略。在支持跨组件样式化的更高级特性之前,这些组合器只是一种中间解决方案。

@Component({
  ...
  encapsulation: ViewEncapsulation.None,
})

柱塞示例

 类似资料:
  • 问题内容: 我正在将html作为innerHtml传递给我的视图。以下是我的看法 如果我通过下面的代码,它工作正常。 如果我通过下面的代码,其中包含颜色,则无法正常工作。 问题答案: 您得到的这种行为是正常的。添加到的类将被忽略,因为默认情况下,封装为。这意味着Angular会阻止样式在组件内部和外部进行拦截。您应该将封装更改为。这样,您将可以在任何需要的地方定义类:在单独的,样式表中(或无关紧要

  • > 到目前为止,我使用角2快速入门创建了一个新项目。 我决定开始使用angular 2 cli,并创建了一个新的angular 2 cli项目。 移动了我的所有文件并重新安装了所有软件包。 现在,当我试图在CLI项目中使用角2材料时,我遵循了这里的指南,但这是我得到的: 会出什么问题?

  • 问题内容: 我正在尝试做这样的事情 item.innerHTML包含需要去那里的html,但是由于它是dom的一部分,因此将其替换为字符串。有没有一种方法可以替换掉innerHTML? 谢谢! 问题答案: 您需要使用ngBindHtml: http://plnkr.co/edit/n1rLzgEZQoa2tJf0qnVZ?p=preview 在控制器中: html: 您将需要以下模块: http:

  • 问题内容: 我在Angular 2中有一个名为my-comp的组件: 如何在Angular 2中设置此组件的宿主元素的样式? 在Polymer中,您将使用“:host”选择器。我在Angular 2中尝试过。但是它不起作用。 我也尝试使用组件作为选择器: 两种方法似乎都不起作用。 谢谢。 问题答案: 有一个错误,但在此同时已修复。现在工作正常。 还支持 用于匹配主机元素上的属性,类… 用于匹配父组

  • 我想在进行某些处理时显示一个进度条覆盖图。我可以计算完成百分比,所以我想使用一个确定的进度条。对于覆盖部分,我想使用一个对话框。基本上,我想做这里要做的事情(Angular 2 Material Progress微调器:显示为叠加),但我不需要微调器。因此,我的组件将如下所示: 模板: 元件: 然后我使用这个组件的代码如下: 我发现了这一点(如何将数据传递到angular material 2的对

  • 我对可观察量很陌生。如何仅从一个简单的字符串创建可观察的?然后订阅它并在它发生变化时输出它。 这有意义吗? 我在谷歌搜索上一点运气都没有。可能是错误的关键字? 添加一些代码以更好地解释: 我想我在这里做错了什么?但不知道怎么问。我将不胜感激的任何解释。