我正在重写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
中重现此功能?
答案 0 :(得分:1)
在Angular Material2中,您可以动态地 apply 主题,但是您不能动态地 generate 主题,因为主题化是使用SASS完成的,而SASS需要进行编译才能生成可用的CSS。