Angular Material-如何在运行时更改按钮颜色

时间:2019-01-09 20:29:23

标签: angular angular-material material-design

我正在使用有角度的材料创建侧栏菜单。我没有找到一种基于某些组件属性来更改按钮颜色的方法。

我已经阅读了文档:https://material.angular.io/components/button/overview

关于主题,它只说:

Buttons can be colored in terms of the current theme using the color property to set the background color to primary, accent, or warn.

这是我的代码:

<button
       *ngFor="let link of links; let i = index"
       mat-raised-button
       color="primary"
       (click)="selectedIndex = i"
       [routerLink]="link.routerLink">
</button>

我什至不知道是否可能,但是我正在寻找这样的东西:

<button
       *ngFor="let link of links; let i = index"
       mat-raised-button
       (click)="selectedIndex = i"
       [color]="selectedIndex === i ? primary : warm"
       [routerLink]="link.routerLink">
</button>

4 个答案:

答案 0 :(得分:3)

很有可能,您需要将字符串文字传递给数据绑定[color]

[color]="selectedIndex === i ? 'primary' : 'warm'"

Stackblitz

https://stackblitz.com/edit/angular-npzkiu?embed=1&file=app/button-overview-example.html

答案 1 :(得分:2)

您必须用引号将颜色主题名称括起来才能将其作为字符串传递:

[color]="selectedIndex === i ? 'primary' : 'warn'"

有关演示,请参见this stackblitz

答案 2 :(得分:2)

尝试此操作,将primary更改为“ primary”,并警告为“ warn”,应该会产生所需的效果。

<button
   *ngFor="let link of links; let i = index"
   mat-raised-button
   (click)="selectedIndex = i"
   [color]="selectedIndex === i ? 'primary' : 'warn'"
   [routerLink]="link.routerLink">
 </button>

答案 3 :(得分:2)

这可以解决您的问题,使用单引号而不是没有引号:

[color]="selectedIndex === i ? 'primary' : 'warn'"