【发布时间】:2019-11-26 15:05:16
【问题描述】:
我创建了两个自定义 Angular Material 主题(蓝色、红色)。
根据"Theming your components" Material 文档,我有一个IconComponent(选择器:my-app-icon),我想使用主题进行设计。
现在,在我的styles.scss 中,我有:
@mixin icon-theme($theme) {
$primary: map-get($theme, primary);
$accent: map-get($theme, accent);
my-app-icon {
background-color: mat-color($primary);
color: mat-color($accent, A400);
}
}
.blue-theme {
@include angular-material-theme($blue-theme);
@include icon-theme($blue-theme);
}
.red-theme {
@include angular-material-theme($red-theme);
@include icon-theme($red-theme);
}
效果很好,但是如果我想嵌套我的主题,例如:
<div class="blue-theme">
<my-app-icon></my-app-icon>
<div class="red-theme">
<my-app-icon></my-app-icon>
</div>
</div>
只有第一个主题声明(此处为blue-theme)有效(对于两个图标)。这是有道理的,因为我的 mixin 暗示了 my-app-icon {} 的双重声明。
如何获得预期的行为(第一个图标蓝色,第二个红色)?
【问题讨论】:
标签: angular sass angular-material