【发布时间】:2020-11-13 07:13:55
【问题描述】:
我正在使用 ngFor 指令显示文本(逐字)。在 ngFor 中,我有一个 if-else-statement,它的条件确定一个词是显示为 <span> 还是 <button> - 这已经可以了。
关于按钮,我希望它们的行为方式如下:在第一次单击单个按钮时,只有此按钮应将背景颜色更改为红色,再次单击时背景颜色应更改为灰色之前。
到目前为止,我编写的代码更改了所有按钮的按钮背景颜色,而不仅仅是单击的单个按钮。 我怎样才能改变只有一个按钮改变它的颜色?
HTML:
<div id="learnerText" *ngFor="let item of wordsJsonText; let i = index" [ngClass]="{active: i === activeIndex}">
<div class="container" id="textBody" id="learnerText">
<ng-container *ngIf="item.is_title==='false' && item.has_context==='false'; then caseA else caseB">
</ng-container>
<ng-template #caseA id="textBody" id="learnerText">
<span id="learnerText">{{item.form}}</span>
</ng-template>
<ng-template #caseB>
<div *ngIf="item.is_title==='false' && item.has_context==='true'">
<Button class="btn btn-secondary" [ngStyle]="{'background-color' : toggle ? 'red' : 'grey'}"
id="bodyButton" text=item.form (click)="onClickMe(item.lemma, item.pos); toggleColor()">{{item.form}}</Button>
</div>
</ng-template>
</div>
</div>
打字稿
private toggle: boolean;
toggleColor() {
this.toggle = !this.toggle;
}
【问题讨论】:
-
所有
background-colors 都绑定到同一个变量toggle,这就是它们都发生变化的原因。让我寻找一个简单的解决方案。
标签: angular typescript ngfor