【发布时间】:2016-12-31 08:50:40
【问题描述】:
我正在尝试动态应用主题。为此,我在网站上输入 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";
当我点击页面上的保存按钮时,页面主题变为白色,我收到此错误:
无法读取未定义的属性“颜色”
我无法追溯colors 的定义位置。我当然没有名为colors 的变量。似乎将调色板应用于主题是错误的。似乎有些不对劲。
如果我将调色板更改为 "blue" 之类的东西,它可以正常工作。设置我的自定义调色板不起作用。
我做错了什么?不幸的是,我无法提供示例,因此如果您需要更多信息,请告诉我。谢谢
【问题讨论】:
-
我试图复制问题但没有成功。我已经根据您的代码创建了一个 CodePen (codepen.io/camden-kid/pen/qNzEWO?editors=1010),但在单击 Add Theme 按钮时没有收到错误消息。但是有两件事:(1)我不明白这部分
this.Theme = "whatever";,(2)如果我将 whatever 更改为 default,我 确实 会遇到类似的错误 在第 34 行,但我怀疑这并没有真正的帮助。此外,单击按钮时主题似乎没有改变。 -
@camden_kid 当我执行
this.Theme = "whatever";时,我会更改应用程序的整体主题。我的身体标签上设置了md-theme="vm.Theme",所以每当我更改主题(因为我有一个默认主题和一个用户设置)时,主题都会更改为新主题,而不是更新默认主题。另外,我似乎无法让你的工作。当我按下按钮时它不会改变主题。 -
对不起,我应该把我的最后一行放在第一行。是的,它没有改变主题。我只是想指出我没有得到你的错误。我会更多地研究为什么主题没有改变......
-
正如关于 GitHub 问题的最后一条评论所述,您必须在配置中定义调色板(我试过了,它确实有效)。动态定义调色板不起作用。 :-(
-
@camden_kid 这太奇怪了,因为那个人(我链接到的帖子)让它工作了?由于我正在使用 $provide 解析提供程序,它应该可以工作吗? :O
标签: angularjs typescript angular-material