css - 如何在不全局应用样式的情况下将样式从 Angular-Cli 中的组件 A 样式表应用到组件 B?

标签 css angular

我有两个 Angular 组件:

@Component({
    selector: ‘component-a’,
    templateUrl: './component-a.html',
    styleUrls: [ ‘./component-a.scss' ],
})

@Component({
    selector: ‘component-b’,
    templateUrl: './component-b.html',
    styleUrls: [ ‘./component-b.scss' ],
})

component-a HTML 中:

<div class=“cmp-a-container”>
    component A
    <component-b></component-b>
</div>

component-b HTML 中:

<div class=“cmp-b-container”>
    component B
</div>

component-b 在其他组件中被重用。但是当在 component-a 中使用 component-b 时,我希望它在 .cmp-b-container 上应用一组特定样式> 类。

如果我在component-a.scss中添加如下代码,

.cmp-a-container {
  .cmp-b-container { /* Styles here */ }
}

样式将不适用。我相信这就是 Angular 的工作方式。

所以我的解决方案是,在 styles.scss(全局 sass 文件)上添加样式。

这是执行此操作的正确方法还是有一种方法可以将 component-a 的样式表中指定的样式应用于 component-b 的内部 html它由 component-a? 包装。为什么 Angular 没有让这成为可能?

我正在使用 Angular-Cli 和 Sass。

最佳答案

您应该使用::ng-deep 以便您的样式传播到子组件,参见 https://angular.io/guide/component-styles#deprecated-deep--and-ng-deep

它应该是这样的:

.cmp-a-container ::ng-deep{
  .cmp-b-container { /* Styles here */ }
}

关于css - 如何在不全局应用样式的情况下将样式从 Angular-Cli 中的组件 A 样式表应用到组件 B?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49445202/

相关文章:

css - Facebook 之类的弹出窗口具有反转的不透明度设置(鼠标悬停/鼠标移出)

angular - Angular2 中的一种数据绑定(bind)方式

HTML 中心输入按钮

Angular 4 和 Materialise 的 CSS 封装

javascript - Angular 动态注入(inject)特定组件

javascript - 如何在 Angular 2 中注入(inject) SVG 图像?

Angular Spring Boot 文件下载

HTML:表格设计无法正常工作

jquery - 如何使用jQuery获取CSS样式的值

html - Firefox 在::after 元素中切断文本