2017-08-04 16 views
1

タイトルが私の質問の正義を行うかどうかはわかりませんが、ここではわかりません。* ngForの背景色を設定してください

私は動的な値のためにループしていた角度material2からmd-toolbarを持っています。今、私は[ngClass]することにより、特定のクリックのツールバーの背景色を設定したい

<md-toolbar (click)="selectedToolbarValue(key.Name)" *ngFor="let key of arrayOfKeys; let i=index"> 
     <span>{{key.Name}}</span> 
</md-toolbar> 

<md-toolbar [ngClass]="{'toolBarColor':setToolbarStyle}" (click)="selectedToolbarValue(key.Name)" *ngFor="let key of arrayOfKeys; let i=index"> 
     <span>{{key.Name}}</span> 
</md-toolbar> 

.tsで:

setToolbarStyle:boolean=false; 
selectedToolbarValue(value){ 
    this.setToolbarStyle = true; 
    //other code 
} 

.scssで:今すぐ

.toolBarColor{ 
background-color:blue; 
color:#fff; 
} 

上記のコードで起こっている、それはすべてのツールバー値をスタイリングされているものこれは私がやったことですループの一部です。クリックされているツールバーだけをスタイルするにはどうすればいいですか?

答えて

2

値の代わりにngClass式の関数を使用できます。この関数は、インデックスまたはその他の一意の識別子を取ることができます。

<md-toolbar [ngClass]="{'toolBarColor':setToolbarStyle(i)}" (click)="selectedToolbarValue(key.Name, i)" *ngFor="let key of arrayOfKeys; let i=index"> 

toolbarStyleIndex: number; 

setToolbarStyle(i) { 
    return i===toolbarStyleIndex; 
} 

selectedToolbarValue(value, i){ 
    this.toolbarStyleIndex = i; 
    //other code 
} 
+0

<md-toolbar [ngClass]="{'toolBarColor': setToolbarStyle(key)}" (click)="selectedToolbarValue(key.Name)" *ngFor="let key of arrayOfKeys; let i=index"> <span>{{key.Name}}</span> </md-toolbar> 

をお使いのコンポーネントクラスでは、メソッドsetToolbarStyle(key)を定義します。名前。コードの振る舞いを変えないだろうか?それに対する具体的な理由は何ですか? – Faisal

+1

@Faisal、これは単なる例です。必要なだけ多くのパラメータを渡すことができます。または、インデックスの代わりに他のキーを使用します。ポイントは 'ngClass'で関数を使うことです。私は少し私の答えをうんざりしました。問題は 'key.Name'は本当にユニークではないかもしれないが、' index'は間違いなく –

+0

あなたの答えは私のものよりも意味がある(Y) – Faisal

1

あなたはarrayOfKeysのbooleanプロパティとしてsetToolbarStyleを追加することができます。そして、次の変更を行います。あなたの代わりにキー `のi``渡す `selectedToolbarValue(I)`メソッドを変更してい

setToolbarStyle(key:any) : boolean { 
    key.setToolbarStyle = true; 
    return key.setToolbarStyle; 
} 
+0

boolean propをarrayofKeysに追加すると、配列自体が変更されることになります。配列そのものは非常に複雑です。配列を変更しないで、依然として要件を達成することをお勧めしますか? –

+0

マキシスからの回答を見る – Faisal

関連する問題