如何在Ionic-Angular中动态更改图标颜色?

pftdvrlh  于 2022-12-08  发布在  Ionic
关注(0)|答案(3)|浏览(297)

我有一个聊天列表,我喜欢根据聊天的状态来改变图标的颜色(来自属性chat.status):

<ion-list  *ngFor = "let chat of chats">
 <ion-item>
   <ion-icon name="ellipse-outline" slot ="end"  color ="primary"></ion-icon>
      <ion-label>
        <h2> {{chat.username}} </h2>
      </ion-label>
 </ion-item>
</ion-list>

当聊天状态为A时,图标颜色应为红色,当聊天状态为B时,图标颜色应为绿色。如何执行此操作?
多谢了

0sgqnhkj

0sgqnhkj1#

您可以使用三元运算子,以下列方式设定颜色:

[color]="chat.status === 'A' ? 'danger' : 'success'"

我使用Ionic的danger作为红色,Ionic的success作为绿色,但如果你愿意,你可以添加自己的颜色。
另一个选择是向ion-icon元素添加一个类,并使用CSS设置颜色(如https://ionicons.com/usage中所述):

<ion-icon 
  slot ="end" 
  name="ellipse-outline" 
  [class.red]="chat.status === 'A'"
  [class.green]="chat.status === 'B'"
></ion-icon>

然后在scss文件中:

ion-icon.red {
  color: red; // your red color
}

ion-icon.green {
  color: green; // your green color
}
2g32fytz

2g32fytz2#

一种方法是在模板中使用style binding

<ion-icon name="ellipse-outline" slot ="end" 
[style.color]="chat.status === 'A' ? 'red' : chat.status === 'B' ? 'green' : 'black'"></ion-icon>

另一种方法是在模板中使用directive

<ion-icon name="ellipse-outline" slot ="end" [ngStyle]="colorIcon()"></ion-icon>

您可以从传回对象的元件控制样式:

public colorIcon(): Object {
    if (chat.status === 'A') {
        return {color: 'red'}
    } else if (chat.status === 'B') {
        return {color: 'green'}
   } else {
        return {}
   }
}
yfwxisqw

yfwxisqw3#

You can also directly provide hex color using style binding

<!-- mycolor = "#123456" -->
<ion-icon [style.color]="mycolor" name="square"></ion-icon>

相关问题