【发布时间】:2018-10-07 16:34:22
【问题描述】:
我正在构建一个主题 Angular2 应用程序。我有大量嵌套组件,我想通过更改一个父类来更改整个应用程序的主题。假设一个主题被称为“theme1”。当我将它应用于非常父 html-tag 时,所有嵌套的子组件将使用 :host-context 切换样式,如下所示:
:host-context(.theme1) .title-toc {
font-family: "bookmania";
font-weight: 700;
font-size: 20pt;
text-transform: uppercase;
color: #a5a5a5;
}
但是,把这个 class="theme1" 放在哪里呢?当我将它放到<body> 时,它可以正常工作,因此代码本身可以正常工作,但我需要动态更改主题,因此它必须位于某个 Angular 组件内,而不是我可以使用[ngClass] 的地方。例如在 AppComponent 内部。但是当我将它放在 app.component 中时(例如 router-outlet 或任何其他应该包装我的整个应用程序的包装标签),它就不再起作用了。
我是否必须以某种方式使用 ::ng-deep 使其深入,否则可能有什么问题?
【问题讨论】:
-
把它放在根组件上怎么样?您可以通过
@HostBinding('attr.class') mainClass = 'theme1';进行设置 -
这行得通!非常酷。谢谢!如果您将此添加为答案,我会接受。