Angular2的组件样式不会在封装的子组件中继承

前端之家收集整理的这篇文章主要介绍了Angular2的组件样式不会在封装的子组件中继承前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写两个组件 – componentA和componentB.其中componentA封装了componentB.它们都有’p’标签.在我的componentA中,我在@Component装饰器中编写样式:[p {color:red}]. componentA的p变为红色,但componentB的颜色仍为黑色.

我认为这是一个需要解决的问题.

样式封装(防止样式流入或流出组件)是Angular组件的主要特征.

有不同的选择来实现你想要的

@Component({
  selector: 'component-b',styles: [`
    p { color: red; }
  `]
  ...
  encapsulation: ViewEncapsulation.None
})

或者您可以使用最近引入的(仅限Angular2)阴影穿孔CSS组合器>>>更改CSS选择器以跨越组件边界

@Component({
  selector: 'component-b',styles: [`
    :host >>> p { color: red; }
  `]
  ...
})

第二种方法适用于默认封装(ViewEncapsulation.Emulated)或封装:ViewEncapsulation.None但这里>>>是多余的.您不能使用>>>封装:ViewEncapsulation.Native – 实际上你现在可以但是>>>对于shadow DOM,不推荐使用(或等效/ deep /).

提示:/ deep /似乎比SASS更好用于>>>

猜你在找的Angularjs相关文章