我希望mat-sidenav
的背景与我的mat-toolbar
-主题色相同。
在src\styles.scss
中,我有:
@import '~@angular/material/prebuilt-themes/indigo-pink.css';
我的模板/ HTML文件具有:
<mat-toolbar color="primary">
<button mat-icon-button (click)="sidenav.toggle()">
<mat-icon>menu</mat-icon>
</button>
Title text
</mat-toolbar>
这很好地显示为带有menu
图标和Title text
的靛蓝菜单栏。
在下面,我想要一个mat-sidenav
(它将具有菜单项),并且我希望mat-sidenav
区域的整个背景与以下颜色相同:
<mat-toolbar color="primary">
这是靛蓝-由主题定义。
HTML代码继续呈现mat-sidenav
:
<mat-sidenav-container>
<mat-sidenav #sidenav mode="side" opened>
<app-vertical-menu></app-vertical-menu> // renders the menu items
</mat-sidenav>
<mat-sidenav-content>
<div class="app-main-area">
<router-outlet></router-outlet>
</div>
</mat-sidenav-content>
</mat-sidenav-container>
应用的主题未触及mat-sidenav
背景和颜色,其背景颜色为空白。
我知道我可以使用模板中的类名称在组件中的mat-sidenav
背景上设置样式-例如:
...
<mat-sidenav #sidenav2 mode="side" opened class="vertical-menu">
...
以及在style / scss文件中:
.vertical-menu {
background-color: navy !important;
}
但是相反,我想应用默认主题的主题颜色(例如:indigo-pink.css
),因此mat-sidenav
的背景颜色与我们用来获取工具栏颜色的主题相同< / p>
答案 0 :(得分:3)
您需要将 自定义主题 应用于组件。总结一下:
style.scss
my-component.component.scss-theme.scss
。这可以与my-component.component.scss
不同。您可以将主题文件中的主题(颜色和版式)和非主题文件中的其他内容(大小,位置等)分开。style.scss
我在Stackblitz上创建了一个示例应用程序。如您所见,mat-sidenav
和mat-toolbar
具有相同的主题。您可以尝试将color=primary|accent|warn
赋予mat-toolbar
和mat-sidenav
Tomas Trajan在The complete guide to Angular Material Themes上写了一个非常不错的中等博客。您可以在Theming your own components上找到Angular团队的文档。
答案 1 :(得分:0)
我知道这不是你想要的(我也不是),但我在我的 styles.css 中定义了一个类,其主色与靛蓝粉红色主题相同
.background-primary { background-color: #3f51b5; }
和我的 mat-sidenav 像这样:
<mat-sidenav class="background-primary"...