垫菜单主题颜色不变

Cac*_*oon 1 css typescript angular-material2 angular

我的主题都完美运行,但由于某种原因,我的 mat-menu 只会以任何默认调用的主题为主题,而不是其他主题。所以为了不破坏它的主题我必须打电话 @include angular-material-theme($dark-theme);

在 styles.scss 的顶部,然后设置我设置的自定义类,默认情况下加载我的灯光,如下所示:

import {OverlayContainer} from "@angular/cdk/overlay";

@Component({
    selector: 'app-navbar',
    templateUrl: './navbar.component.html',
    styleUrls: ['./navbar.component.scss']
})
export class NavbarComponent implements OnInit, AfterViewInit {
    title:string = "Callum.Tech";

    themeClass: string = "light-theme";

    overlay;

    constructor(
        private overlayContainer: OverlayContainer
    ) {
        this.overlay = overlayContainer;
    }

    setDarkTheme(): void {
        this.themeClass = "dark-theme";
    }

    setLightTheme(): void {
        this.themeClass = "light-theme";
    }

    ngOnInit() {
        this.overlay.themeClass = this.themeClass;
    }
}
Run Code Online (Sandbox Code Playgroud)

其他所有内容都将重新主题并正常工作,而无需调用我提到的开始包含,但 mat-menu 会出现故障,仅使用在网站启动时提供的第一个主题,并且不会随主题的其余部分而改变。

这是在 styles.scss 开头调用的深色主题和正常加载的浅色主题的样子

在此输入图像描述

这里是选择的深色主题,但在 styles.scss 开始时未调用深色主题:

在此输入图像描述

Edr*_*ric 5

在重大更改中2.0.0-beta.11

覆盖:现在覆盖是 cdk 的一部分而不是直接的 Angular Material,themeClass 属性已被删除。要将类添加到覆盖层以进行主题化,您可以执行以下操作

overlayContainer.getContainerElement().classList.add('my-theme-class');
Run Code Online (Sandbox Code Playgroud)

因此,您可以按如下方式更改代码:

overlayContainer.getContainerElement().classList.add('my-theme-class');
Run Code Online (Sandbox Code Playgroud)