【发布时间】:2020-09-28 18:22:42
【问题描述】:
ts
isDayClicked: { [key: number]: boolean } = {};
constructor() { }
setSelectedDay(day: string, index: number): void {
switch (index) {
case 0:
this.isDayClicked[0] = true;
this.isDayClicked[1] = false;
this.isDayClicked[2] = false;
break;
case 1:
this.isDayClicked[0] = false;
this.isDayClicked[1] = true;
this.isDayClicked[2] = false;
break;
case 2:
this.isDayClicked[0] = false;
this.isDayClicked[1] = false;
this.isDayClicked[2] = true;
break;
default:
}
}
html
<ion-col size="4" *ngFor="let d of validDays;let i = index;">
<ion-button expand="block" fill="outline"
[ngClass]="{'active':isDayClicked[i]}" (click)="setSelectedDay(d,i)">
{{d}}
</ion-button>
</ion-col>
css
.active {
background-color: var(--ion-color-primary);
}
用户界面
我有如上图所示的按钮。我需要显示一个活动按钮。所以我使用了上面的技巧。但它似乎是硬编码的东西。即this.isDayClicked[0] = true;this.isDayClicked[1] = false;this.isDayClicked[2] = false;我有更好的方法来处理这种用例吗?
注意:上述方法运行良好。但我想以更好的方式做到这一点。
【问题讨论】:
-
这个问题属于codereview
-
创建变量
selectedIndex,默认可以为null。点击按钮可以设置selectedIndex == current index of button。然后在[ngClass]="{'active': selectedIndex === i}"
标签: html css angular typescript ionic-framework