【问题标题】:Using angular material colors in my own components在我自己的组件中使用有角度的材质颜色
【发布时间】:2017-06-29 16:26:15
【问题描述】:

如果我想使用主题中定义的颜色为不是材料 2 组件的元素设置样式,那么标准方法是什么?

假设我在组件中有一个h1 标签,我希望颜色是我的primary color。我希望能够做这样的事情:

h1{
  color: $color-primary; 
}

目前我有一个 theme.scss 和 styles.scss

theme.scss

@import '~@angular/material/theming';
@include mat-core();
$color-primary: mat-palette($mat-blue);
$color-accent:  mat-palette($mat-amber, A400, A200, A500);
$color-warn:    mat-palette($mat-red);
$theme: mat-light-theme($color-primary, $color-accent, $color-warn);
@include angular-material-theme($theme);

我可以在我的component.scss 中导入theme.scss,但是它们是state not to do so

导入 mat-core() sass mixin。这包括所有常见的样式 由多个组件使用。这应该只包括 一次在您的应用程序中。如果多次包含此 mixin, 您的应用程序最终会得到这些常见的多个副本 样式。

【问题讨论】:

    标签: angular material-design angular-material angular-material2


    【解决方案1】:

    我认为这可以通过将您的自定义主题拆分为多个文件来解决。例如,我有一个_mat-colors.scss_mat-theme.scss_mat-colors 包含需要的三个颜色变量; _mat-theme 使用 _mat-colors 并且是我定义调色板并包含 mat-core 的地方。然后,您可以拥有一个 _variables 或 _colors 文件并像这样使用它:

    @import '@angular/material/theming';
    @import './mat-colors';
    
    $color-red: mat-color($my-warn-palette);
    

    然后您可以使用$color-red 或您根据需要定义的任何其他内容。

    【讨论】:

    • 如果您在很多组件中导入mat-colors,那么您也在导入mat-core,因为mat-colors 本身会导入它。正如我所说,他们在他们的文档中说不要这样做。所以除非我错过了什么,否则我认为这违背了他们的建议。
    • 是的,我认为你是正确的@Ced。我认为您可以在主 SASS 文件中调用它,而不是在 _mat-theme 中使用 @mat-core()。还是我弄错了,或者我误解了什么?
    猜你喜欢
    • 1970-01-01
    • 2021-09-30
    • 2018-09-25
    • 2018-09-14
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 2017-02-15
    相关资源
    最近更新 更多