我已经阅读了文档,其中说如果我想使用,scss我必须运行以下命令:
ng set defaults.styleExt scss
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做并生成该文件时,我仍然在我的控制台中收到此错误:
ng set defaults.styleExt scss
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
他们查看Angular Material文档时,建议使用-theme每个组件一个文件来管理将与主题相关的样式应用于特定类。
在我看来,这种方法的一些缺点是:
mat-color($primary, 200)边框颜色,现在想将其更改为mat-color($primary, 300)。这将在整个代码库中重复进行。给定一致的设计语言,将仅使用一部分颜色(例如,主调色板中的4种颜色,重点调色板中的3种颜色,一些不同的前景色/背景色等)。
鉴于以上所述,_colors.scss使用主题定义确切的颜色,而不是希望开发人员每次都从主题中提取正确的值,不是更有意义吗?
例如,也许像这样:
$clr-primary-default: mat-color($primary);
$clr-primary-contrast: mat-color($primary, default-contrast);
$clr-primary-light: mat-color($primary, lighter);
$clr-primary-dark: mat-color($primary, darker);
$clr-accent-default: mat-color($accent);
$clr-accent-light: mat-color($accent, lighter);
$clr-accent-dark: mat-color($accent, darker);
$clr-default-text: mat-color($foreground);
$clr-secondary-text: mat-color($foreground, secondary-text);
//etc
Run Code Online (Sandbox Code Playgroud)
然后-theme,我无需为需要特定颜色的每个组件创建单独的文件,而是可以简单地导入colors.scss文件并直接在*.component.scss文件中使用变量。
只是想验证上面的内容是否正确,并且我没有错过任何明显的会引起麻烦的东西?
另一个棘手的部分是如何colors有效地在单独的文件中定义它们,因为该文件需要访问主题数据。