如何在Angular Material中设置图标的颜色?

Jos*_*rer 36 angular-material angular-material2 angular

我有这个,我会假设工作,但不是:

<mat-icon color="white">home</mat-icon>
Run Code Online (Sandbox Code Playgroud)

然后,我也有:

<button mat-raised-button color="accent" type="submit"
 [disabled]="!recipientForm.form.valid">
    <mat-icon color="white">save</mat-icon>SAVE
</button>
Run Code Online (Sandbox Code Playgroud)

此代码段由于某种原因确实有效(将图标显示为白色).

如何获得独行mat-icon以显示为白色使用color属性?(我可以很容易地添加一个白班,但我想了解这一点)

Edr*_*ric 63

那是因为color输入只接受三个属性:"primary","accent""warn".换句话说,你要么:

  1. 将主题设置为主要/重音的白色.

    styles.scss:

    @import '~@angular/material/theming';
    
    @include mat-core();
    
    $app-primary: mat-palette($mat-white);
    $app-accent:  mat-palette($mat-pink);
    $app-theme: mat-light-theme($app-primary, $app-accent);
    @include angular-material-theme($app-theme);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用方法如下:

    <mat-icon color="primary">menu</mat-icon>
    
    Run Code Online (Sandbox Code Playgroud)

要么:

  1. 只需添加一个类来设置您的图标样式:

    .white-icon {
        color: white;
    }
    /* Note: If you're using an SVG icon, you should make the class target the `<svg>` element */
    .white-icon svg {
        fill: white;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将课程添加到您的图标:

    <mat-icon class="white-icon">menu</mat-icon>
    
    Run Code Online (Sandbox Code Playgroud)

  • 如果您的SVG已在内部定义了样式,则必须将其删除。例如。通常会优先使用样式“ .a”。确保删除`class ='a'`而不是`a {fill:...}`属性 (2认同)

小智 10

在component.css或app.css中添加图标颜色样式

.material-icons.color_green { color: #00FF00; }
.material-icons.color_white { color: #FFFFFF; }
Run Code Online (Sandbox Code Playgroud)

在component.html中设置图标类

<mat-icon class="material-icons color_green">games</mat-icon>
<mat-icon class="material-icons color_white">cloud</mat-icon>
Run Code Online (Sandbox Code Playgroud)

建立


Jim*_*ane 8

或者干脆

添加到您的元素

[ngStyle]="{'color': , myVariableColor}"

例如

<mat-icon [ngStyle]="{'color': myVariableColor}">{{ getActivityIcon() }}</mat-icon>

哪里color可以定义在另一个组件等

  • @sgracki 你会评论关于为什么不使用这些方法的每个答案吗? (3认同)
  • 这与我关于颜色变化的答案有什么关系?@sgracki 另外,你正在做的事情,评论超出了范围,我认为它不符合社区标准。祝您建立团队并获得博客上的浏览量。我已经举报了这种行为。 (3认同)
  • 很确定 ngStyle 就是为此而设计的 (3认同)
  • 避免在 .html 文件中使用函数,这是不好的做法。更多信息在这里 - https://blog.appverse.io/why-it-is-a-bad-idea-to-use-methods-in-the-html-templates-with-angular-2-30d49f0d3b16 (2认同)
  • 无意冒犯:) 只是说在 .html 文件中使用函数不是一个好习惯。保持冷静并继续编码!此致! (2认同)

Har*_*esh 6

color="white" 不是 Angular Material 的已知属性。

颜色属性可以改变primaryaccentwarn。如本文档所述

您的按钮内的图标有效,因为其父类按钮具有 css 类color:white,或者可能是您color="accent"的白色。检查开发人员工具以找到它。

默认情况下,图标将使用当前字体颜色


小智 5

<mat-icon style="-webkit-text-fill-color:blue">face</mat-icon>
Run Code Online (Sandbox Code Playgroud)

  • 添加一些描述 (6认同)