【问题标题】:Angular 4+ overwrite child component's styleAngular 4+覆盖子组件的样式
【发布时间】:2018-08-15 17:27:26
【问题描述】:

我想强制父组件在没有 !important 修饰符的情况下更改子组件的样式。我的问题是..有没有办法做到这一点? (我是角度的初学者可能不是最好的解决方案。)

这是一个关于 2 个组合的最小示例。 Child 在模板中有一个简单的 div :)

parent.component.scss:

::ng-deep .child-div{
    background-color: red;
}

childe.component.scss:

.child-div{
    width: 100rem;
    height: 100rem;
    background-color: $pink;
    color: $blue;
    line-height: 100rem;
    text-align: center;
    margin-left: auto;
    margin-right: auto;
}

感谢您的时间和回答! :)

编辑 #1 --- 我从全局 style.scss 试了一下

【问题讨论】:

  • 你试过了吗? ::ng-deep .child-div[_ngcontent-c1]{ background-color: red; }
  • 是的,但不起作用:(
  • 你能在这里指定你的元素结构吗?

标签: angular sass angular5


【解决方案1】:

添加到您的全局样式表

app-root app-child .child-div {
   background-color: red;
}

您还必须关闭子组件的viewencapsulation。我创建了一个stackblitz 用于演示。

请记住,在这种情况下,您将始终覆盖子样式,因为应用组件将始终是任何子组件的父级。

【讨论】:

  • 它没有帮助:(组件具有更高的优先级,因为它们是在全局之后生成的。我用一张关于它的图片进行了编辑。
  • 更新了帖子。
  • 我可以使用 css > 运算符来处理“记住”部分,对吗? :)
  • 不确定,你可能想试试 :)
  • 在示例中,您并没有完全覆盖父组件,对吧?它是全球 CSS 的一部分。如果我们在应用组件样式文件中编写相同的 css,它将无法正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-04
  • 2021-01-01
  • 2018-12-06
  • 1970-01-01
  • 2020-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多