我正在尝试动态应用主题。我通过在网站上输入HEX颜色来获得主色和重点色,然后生成颜色图等等。地图看起来是这样的,一旦我做:适用于动态主题的自定义调色板
{
"50": "8080ff",
"100": "6666ff",
"200": "4d4dff",
"300": "3333ff",
"400": "1a1aff",
"500": "0000ff",
"600": "0000e6",
"700": "0000cc",
"800": "0000b3",
"900": "000099",
"A100": "9999ff",
"A200": "b3b3ff",
"A400": "ccccff",
"A700": "000080"
}
我然后创建使用主题提供了一个全新的调色板(其中customPrimary
是我上面的对象):
this.themeProvider.definePalette('customPrimary', customPrimary);
我this.themeProvider
是我$mdThemingProvider
从我的App.Config.ts
发送,我定义主题提供程序等。基本上this.themeProvider = $mdThemingProvider
。之前你问得太多了,去阅读这样的:https://github.com/angular/material/issues/5502
我然后生成一个新的主题,并设置调色板等:
this.themeProvider.theme('whatever').primaryPalette('customPrimary').accentPalette('customAccent');
this.$mdTheming.generateTheme('whatever');
this.themeProvider.setDefaultTheme('whatever');
this.Theme = "whatever";
当我打我的页面,该页面主题保存按钮改变为白色,我得到这个错误:
Cannot read property 'colors' of undefined
我不能追溯到哪里colors
定义。我当然没有一个名为colors
的变量。这似乎是应用调色板的主题是做错了。有些东西看起来不正确。
如果我将调色板更换为类似"blue"
的东西,它工作正常。设置我的自定义调色板不起作用。
我在做什么错?不幸的是我不能提供一个例子,所以请让我知道你是否需要更多信息。由于
我试图复制这个问题,但没有成功。我已经根据你的代码创建了一个CodePen(http://codepen.io/camden-kid/pen/qNzEWO?editors=1010),但是当点击**添加主题**按钮时不会出错。两件事,虽然:(1)我不明白这部分this.Theme =“无论”;',(2)我*做*如果我改变**类似的错误**任何**到**默认**在第34行,但这并没有真正的帮助,我怀疑。另外,点击按钮时,主题看起来不会改变。 –
@camden_kid当我做'this.Theme =“什么”;'我改变了应用程序的整体主题。我在我的身体标签上设置了'md-theme =“vm.Theme”',所以无论何时更改主题(因为我有一个默认主题和一个用户设置),主题都会更改为新主题,而不是更新默认主题。另外,我似乎无法让你的工作。当我按下按钮时它不会改变主题。 – MortenMoulder
对不起,我应该把我的最后一行作为第一行。是的,它不会改变主题。我只想指出,我没有得到你的错误。我会更深入地探讨为什么主题不会改变...... –