2017-11-30 9 views
0

私がクリックしたボタンの背景色を変更したいのですが、私のコードですが、期待通りに動作していません。行ボタン。どんな助け?ngFor角度2でクリックしたアイテムのbgcolorを変更します。

errorStepMenuOpen() { 
    this.errorStepMenu = true; 
    this.btnColor = "#ff7300"; 
} 
+0

それは、すべての行のボタンの色を変更します:あなたのTSに

<tr *ngFor="let stageitem of stageListData; let i = index;"> <td>{{stageitem.srcScriptInstanceName}}</td> <td>{{stageitem.startTime}}</td> <td>{{stageitem.endTime}}</td> <td>Manual</td> <td>{{stageitem.state}}</td> <td><button class="erroDisplayBtn" [ngStyle]="{'background-color':btnColor[i]}" (click)="errorStepMenuOpen($event, stageitem, i)">{{stageitem.error}}</button></td> </tr> 

:あなたのテンプレートで

は、変更に追従させます。 btnColorはすべて同じものに変更されています。 –

+1

あなたは何のstageitemを意味するかについては何も言及していないので、もちろん動作しません。特定のオブジェクト*に何かを設定するか、アイテムのインデックスを使用するか、独自の状態の子コンポーネントを分割します。 – jonrsharpe

+0

'this'はおそらくコンポーネントオブジェクトを参照するので、繰り返し要素に関してグローバルです。 – isherwood

答えて

0

クイック回避策ではなく、単一のbtnColorを有するのである2スクリプト

<tr *ngFor="let stageitem of stageListData"> 
     <td>{{stageitem.srcScriptInstanceName}}</td> 
     <td>{{stageitem.startTime}}</td> 
     <td>{{stageitem.endTime}}</td> 
     <td>Manual</td> 
     <td>{{stageitem.state}}</td> 
     <td><button class="erroDisplayBtn" [ngStyle]="{'background-color':btnColor}" (click)="errorStepMenuOpen($event, stageitem)">{{stageitem.error}}</button></td> 
</tr> 

角度、あなたはbtnColors配列を持つことができます。

stageListDataが入力されている場合は、stageListDataをループして、各stageItemに対してデフォルトの色をbtnColorsにプッシュできます。なぜなら、あなたの変数 `これにより、

errorStepMenuOpen(event, stageItem, index) { 
    this.errorStepMenu = true; 
    this.btnColors[index] = "#ff7300"; 
} 
関連する問題