2016-12-01 6 views
1

クラスリストに追加されるngClassの値に変数を使用します。私の使用例は、私は画像スプライトのコレクションを持っているということです。ベーススプライトがあり、ベーススプライトと同じファイル名を持ち、最後に ' - アクティブ'が追加されたアクティブ状態があります。私は、要素に目的のスプライトファイル名に一致するクラスを与えることによって、ドキュメントにスプライトを追加します。ユーザーが要素の上を移動するとき、2つのスプライトの間を行き来する必要があります。それ、どうやったら出来るの?角2 ngClassの値に変数を使用するには

このような例を何かのため

(注:tool.name ===スプライトのファイル名を表示する):あなたは.tool-name.active として、あなたのクラスを持つことができ、クラス.tool-name-active を持つの代わりに

<li *ngFor='let tool of tools' (mouseenter)='tool.isActive = true' (mouseleave)='tool.isActive = false'> 
    <span [ngClass]='{ {{tool.name}}-active: tool.isActive, {{tool.name}}: !tool.isActive }'>{{tool.name}}</span> 
</li> 
+0

true/falseの間でisActiveを動的に切り替えるようなものが必要ですか? –

+0

いいえ、それぞれのtool.nameはスプライトのファイル名と一致します。さらに、各スプライトには同じ名前の-activeが追加された2番目のファイルがあります。私はホバリングの2つのスプライトの間を切り替える必要があります。 – efarley

答えて

1

そして、あなたは多分意志が役立ちますngClassの配列を返す関数を使用して、次の

<li *ngFor='let tool of tools'> 
    <span class="{{tool.name}}" [ngClass]='{active: isActive}'>{{tool.name}}</span> 
</li> 
+0

-activeはスプライト名なので、文字列全体が必要です。たとえば、isActiveがfalseの場合は.color-btn、isActiveがtrueの場合は.color-btn-activeです。 .color-btn.activeは、color-btnという名前のスプライトをロードするだけです。 – efarley

+0

あなたのcssクラス名を.color-btn-activeから.color-btn.activeに変更することができれば可能です。 – lthh89vt

+0

私が言ったように、クラスが.color-btn-activeでcolor-btn-active.pngと一致するようにする必要があります。私はcolor-btn.pngと一致するように.color-btnも必要です。ファイル名に一致するこれらのクラスがないと、スプライトは読み込まれません。 – efarley

2

を行うことができます。

<li *ngFor='let tool of tools'><span [ngClass]='chkClass(tool)'>{{tool.name}}</span></li> 


public chkClass(item:any){ 
    let newClass = {}; 
    newClass[item.name+ '-active'] = true; 
    newClass[item.name] = false; 
    return newClass; 
}