angular 控件css_angular - 来自父组件的CSS fi的样式子组件

在Angular中,父组件无法直接应用样式到子组件,因为组件样式是封装的。但可以通过使用`:host ::ng-deep`或`/deep/`选择器穿透组件封装来实现。然而,这种方法已被弃用。推荐使用组件间通信,如传递属性,让子组件根据接收到的属性值来应用自身样式。另外,可以考虑改变组件的`ViewEncapsulation`策略,设置为`ViewEncapsulation.None`,但这可能影响组件的封装性和可维护性。
摘要由CSDN通过智能技术生成

angular - 来自父组件的CSS fi的样式子组件

我有一个父组件:

我想用子组件填充这个组:

父模板:

儿童模板:

Test

由于child和parent是两个独立的组件,它们的风格被锁定在它们自己的范围内。

在我的父组件中,我尝试过:

.parent .child {

// Styles for child

}

但child样式未应用于parent组件。

我尝试使用child将parent的样式表包含到child组件中以解决范围问题:

// child.component.ts

styleUrls: [

'./parent.component.css',

'./child.component.css',

]

但这没有帮助,也尝试了另一种方式将child样式表提取到parent,但这也没有帮助。

那么如何设置包含在父组件中的子组件的样式?

11个解决方案

152 votes

更新 - 最新方式

如果可以避免的话,不要这样做。 正如Devon Sans在评论中指出的那样:这个功能很可能会被弃用。

更新 - 更新的方式

从Angular 4.3.0开始,所有穿孔的css组合器都被弃用了。 Angular团队推出了一个新的组合子encapsulation mode(仍处于实验水平,而不是完整和最终的方式),如下所示,

演示:[https://plnkr.co/edit/RBJIszu14o4svHLQt563?p=preview]

styles: [

`

:host { color: red; }

:host ::ng-deep parent {

color:blue;

}

:host ::ng-deep child{

color:orange;

}

:host ::ng-deep child.class1 {

color:yellow;

}

:host ::ng-deep child.class2{

color:pink;

}

`

],

template: `

Angular2 //red

//blue

//orange

//yellow

//pink

`

老路

您可以使用encapsulation mode和/或piercing CSS combinators >>>, /deep/ and ::shadow

工作实例:[http://plnkr.co/edit/1RBDGQ?p=preview]

styles: [

`

:host { color: red; }

:host >>> parent {

color:blue;

}

:host >>> child{

color:orange;

}

:host >>> child.class1 {

color:yellow;

}

:host >>> child.class2{

color:pink;

}

`

],

template: `

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值