【问题标题】:Change color of the clicked button with ngClass, on buttons generated with ngFor在使用 ngFor 生成的按钮上,使用 ngClass 更改单击按钮的颜色
【发布时间】:2021-04-05 15:56:18
【问题描述】:

屏幕上共有 80 个按钮,呈现如下:

<tr *ngFor="let plans of PlanList">
    <td class="text-primary">{{plans.typename}} </td>
    <td class="text-center"><a (click)="criticalSelect(plans.typeid, '1', plans.plan1, '250')" class="btn btn-primary text-white">${{plans.plan1}}</a></td>
    <td class="text-center"><a (click)="criticalSelect(plans.typeid, '2', plans.plan2, '250')" class="btn btn-primary text-white">${{plans.plan2}}</a></td>
    <td class="text-center"><a (click)="criticalSelect(plans.typeid, '3', plans.plan3, '250')" class="btn btn-primary text-white">${{plans.plan3}}</a></td>
    <td class="text-center"><a (click)="criticalSelect(plans.typeid, '4', plans.plan4, '250')" class="btn btn-primary text-white">${{plans.plan4}}</a></td>
</tr>

当按钮被点击时,我调用criticalSelect()

一切都很好,直到用户要求我将点击按钮的颜色从 btn-primary 更改为 btn-success。我相信我必须使用 ngClass 来执行此操作,但我不知道如何识别正在单击的按钮,如果单击了另一个按钮,则将前一个按钮放回 btn-primary 并将新按钮放回 btn-success

【问题讨论】:

  • 您希望每一行都发生这种情况吗?我的意思是,第一排按钮之一是 btn-success,第二排按钮也是 btn-success?

标签: angular


【解决方案1】:

考虑使用ngForOf 索引导出变量来为预定义变量分配最后一次单击的按钮索引,接下来使用ngClass 有条件地将btn-success 应用于元素,具体取决于其id 是否等于lastClicked,如下所示:

组件:

lastClicked: number;

模板:

<tr *ngFor="let plans of PlanList; let index" (click)="lastClicked = index" [ngClass]="{'btn-success': index == lastClicked}" >
  <td class="text-primary">{{plans.typename}} </td>
  <td><a (click)="criticalSelect(...)" class="btn btn-primary text-white">${{plans.plan1}}</a></td>
  <td><a (click)="criticalSelect(...)" class="btn btn-primary text-white">${{plans.plan2}}</a></td>
  <td><a (click)="criticalSelect(...)" class="btn btn-primary text-white">${{plans.plan3}}</a></td>
  <td><a (click)="criticalSelect(...)" class="btn btn-primary text-white">${{plans.plan4}}</a></td>
</tr>

【讨论】:

  • 嗨拉菲!它起作用了,它改变了按钮的类,但改变了整行按钮,而不是被点击的那个。我会向您发送屏幕截图,但我不知道如何。我正在尝试使用您的代码来找到解决方案。谢谢。
  • 太棒了。谢谢拉菲!
  • 我通过添加索引和每个字段的值(金钱)的组合对其进行了修改,以使每个按钮都独一无二。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-28
  • 2020-11-13
相关资源
最近更新 更多