角材料动态定义主题

时间:2018-11-29 13:20:11

标签: angularjs angular angular-material themes

我正在重写AngularJS应用程序,其中应用程序的主题由服务器提供。用户也可以在应用程序内(通过颜色选择器)编辑主题。

这可以通过Angularjs资料中的ng.material.IThemingProvider$mdTheming来实现。但是在Angular中,这些服务不存在。因此,我想到了一个问题:如何动态创建并使用Angular Material主题?


服务器响应

我正在从服务器获取以下数据:

"css": {
    "--nav-font-color-accent": "#fff",
    "--nav-font-color-active": "#fff",
    "--primary": "#4f2d7f",
    "--nav-background": "#fefffe",
    "--nav-font-color": "#47a742",
    "--warn": "#ff5722",
    "--accent": "#00a8b5",
    "--brand-color": "#47a742"
}

然后,这些数据通过ng.material.IThemingProvider转换为Angularjs材质主题:

 this.themeProvider.definePalette('primaryPalette', this.generatePalette(config['--primary']));
 this.themeProvider.theme('default')
          .primaryPalette('primaryPalette')

有没有办法在Angular Material 7.1.0中重现此功能?

1 个答案:

答案 0 :(得分:1)

在Angular Material2中,您可以动态地 apply 主题,但是您不能动态地 generate 主题,因为主题化是使用SASS完成的,而SASS需要进行编译才能生成可用的CSS。