css - 如何从嵌入的组件设置宿主组件的样式

标签 css angular transclusion

我有 2 个组件,一个父组件和一个子组件。父级包含子级并使用它来包装一些内容并为其添加标题。 子组件使用嵌入来实现这一点。

父模板如下所示:

<div class="parent">
  <child [title]="componentTitle" class="child">
    <p>some content</p>
  </child>  
</div>

子模板如下所示:

<div class="child">
  <h2 class="title">{{title}}</h2>
  <ng-content></ng-content>
</div>

当我尝试使用父组件的 CSS 来控制样式时,我可以非常简单地处理所有嵌入的内容:

.child p {
  background-color: blue;
}

但是,我无法访问标题元素。换句话说,以下规则不起作用:

.child h2.title {
  background-color: red;
}

因为父级是子级的主机,所以使用 :host 是行不通的。

有什么建议吗?

最佳答案

好吧,你可以这样做:

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

不过我认为这已被弃用。最合适的方法是将输入传递给 child 。我建议: 1) 向子类添加一个@Input() titleColor。 2) .red CSS 样式,背景颜色:红色。给 child 的CSS 3) 添加一个 [ngClass]="titleColor"到子类 h2

关于css - 如何从嵌入的组件设置宿主组件的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54872927/

相关文章:

java - 在 Vaadin 应用程序中添加自己的 HTML 元素和自定义 CSS

angular - Ionic 3 angular 5 - 无法解析 "page"的所有参数

带有 rxjs 的 Angular HttpClient

angularjs - Angular : difference when using template or templateUrl

html - 如何在css中使输入和选择宽度相同

javascript - 可折叠菜单需要最终调整(jquery)

html - 如何防止其他 div 停止鼠标悬停

javascript - 对类数组对象进行排序 Angular

javascript - 如何在 Angular 工作中进行嵌套嵌入?