【问题标题】:Styling a child component differently in another component在另一个组件中以不同方式设置子组件的样式
【发布时间】:2017-08-21 10:38:47
【问题描述】:

我正在尝试设置我的alert 框(来自引导程序)[这也是一个组件],当它出现在我的一个组件中时略有不同。对于其他地方,我想使用它的默认样式。

我可以通过以下方式实现我想要的:

encapsulation: ViewEncapsulation.None 在我的父组件中。但是我真的很想避免它并学习使用最佳实践来做到这一点。

谁能解释一下如何在不修改encapsulations的情况下实现这一点?

在一些帖子中,用户提到使用 :host 和 ::content css 属性,但到目前为止我无法使用它们。

我相信这是一个非常常见的场景,应该有一个很好的方法来做到这一点。

【问题讨论】:

    标签: angular typescript sass


    【解决方案1】:

    你可以在父类中使用/deep/

    :host /deep/ some-grand-child {
      color: blue;
    }
    

    在不将ViewEncapsulation 设置为None 的情况下使选择器跨越组件边界。

    【讨论】:

    • 哇——它有效!谢谢。我确实看到有人提到/deep/,但从没想过它会在 CSS 选择器中工作。我显然需要更深入地研究 shadow DOM。
    • 这仅适用于 Angular2+,并且仅适用于 ViewEncapsulation.Emulated。在 shadow DOM 中,它们被添加到 Chrome 但已弃用(Angular 重写了选择器)
    猜你喜欢
    • 2021-03-07
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 2021-04-08
    • 2019-04-23
    • 1970-01-01
    • 2020-08-30
    相关资源
    最近更新 更多