gpt4 book ai didi

Angular 2's component' s样式在封装的子组件中没有继承

转载 作者:太空狗 更新时间:2023-10-29 17:02:00 25 4
gpt4 key购买 nike

我正在编写两个组件 - ComponentAComponentB,其中 ComponentA 封装了 ComponentB。它们都有一个 p 标签。在我的 ComponentA 中,我正在编写 styles: p { color:red } 在我的 @Component 装饰器中。 ComponentAp 更改为红色,但 ComponentB 的颜色保持黑色。

我认为这是一个需要解决的错误。

最佳答案

样式封装(防止样式渗入或渗出组件)是 Angular 组件的一个主要特性。

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

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

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

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

第二种方法使用默认封装 (ViewEncapsulation.Emulated)。
您不能将 ::ng-deep (>>>) 与 encapsulation: ViewEncapsulation.Native 一起使用。
>>>(或等效的 /deep/)的支持已从 Chrome 中删除,其他浏览器从未真正支持过。

提示:
/deep/ 似乎比 >>>
更适合 SASSSASS 不久前引入了 ::ng-deep 来支持这个 Angular 特性(当对 /deep/ 的支持从 SASS 中移除时)

关于Angular 2's component' s样式在封装的子组件中没有继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36738902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com