2017-03-15 15 views
0

AngularとSemantic-UIフレームワークを使用してWebアプリケーションを開発しています。特定の条件に要素にクラスを追加するためのAngular2:特定の条件で要素をクラスに追加/変更する方法

は、私はすでに次の方法を使用しています

[class.className]='condition' 

は今、私は1人のクラス名以上のものを持っていると私はそれに対処する方法を見つけ出すことはできません。

このPlunkerに示すように、ngClassを使用しようとしました。 ご覧のとおり、このソリューションはまったく機能しません。

Plunkerを正常に動作させるにはどうすればいいですか?

答えて

1

[ngClass]を使用すると、いくつかのクラスを含む文字列を作成できます。この場合firstClass

<div [ngClass]="('firstClass ' + (active ? 'secondClass' : ''))"></div> 

最初のクラスであり、活性はsecondClassクラスを設定するブール値です。

だから、あなたのケースでは、あなたのコードはなることができます:

<div class="field"> 
    <label for="name">Name:</label> 
    <div class="ui input" [ngClass]= "((myForm.controls.name.pending ? 'loading' : '') + 'secondClass')"> 
     <input id="name" [formControl]="myForm.controls.name"> 
    </div> 
</div> 

は、2つの連続したクラス間のスペースを提供することを忘れないでください。あなたのplunkerについては

EDIT

、あなたのようにngClassステートメントを追加するために持っている:

[ngClass]="[o.order === 'asc' ? 'chevron circle up': '' , o.order === 'desc' ? 'chevron circle down': '']" 
+0

こんにちは、最後に私の質問をお読みになりましたか? Plunkerでは 'ngClass'は動作しません。 – smartmouse

+0

編集した回答を確認してください。ここで述べたように 'ngClass'を書くという両方の構文を使うことができます。 – nashcheez

+0

あなたの文法は正しいですか?それは正しいとは思わない。 – smartmouse

2

あなたはときに、あなたのテストの結果[ngClass]

<div class="field"> 
    <label for="name">Name:</label> 
    <div class="ui input" [ngClass]="{loading : myForm.controls.name.pending}"> 
     <input id="name" [formControl]="myForm.controls.name"> 
    </div> 
</div> 

を使用することができますtrueあなたのクラスにクラスを追加します。それ以外の場合はは、要素からを削除します

+0

こんにちは、最後に私の質問を読んでいますか? Plunkerでは、ngClassは機能しません。 – smartmouse

+0

あなたのプランナーで働いています。あなたが得ることのないことは、ngClassがfalseの場合、それは**スパンからクラスを削除します。 – YounesM

+1

彼はあなたの固定プランナーです:https://plnkr.co/edit/XcwRdZ80UrVMG2mVAG8j?p=preview – YounesM

関連する問題