2017-02-06 16 views
0

条件付きngClassスタイルとブートストラップラベルでAngular2を動作させることはできません。Angular2 [ngClass]条件付きブートストラップスタイリングが中断されています

<h1 [ngClass]="{'label label-warning': yourName=='Daniel', 
       'label label-success': yourName!='Daniel'}"> 

ngClassは、私は私のアプリのスタイルを設定するとき'label label-success'から最初の「ラベル」を削除しているように見えます。 2番目の条件が満たされたときに正しくスタイルを設定しますが、最初の条件が満たされたときにはスタイルが正しくありません。

要素の検査では、2番目の条件が満たされた場合、スタイルはh1.label.label-successですが、最初の条件が満たされた場合は、それはh1.label-errorと誤った形式になります。

エラーについては、このplunkerを参照してください。

https://plnkr.co/edit/qJLWBzCXXUn7hNKEWXIs?p=preview

は私がガイド(https://angular.io/docs/ts/latest/cookbook/a1-a2-quick-reference.html)をアップグレードしAngularJSを踏襲しているが、それは仕事を得ることができない正しく

+0

ここでチェックアウト・ソリューションのhttp角度2スタイルクラスを使用することができ、単にclass="label"を使用して直接HTMLクラスであなたの固定一般的なクラスを置くだけ[ngClass]

<h1 class="label" [ngClass]="{'label-warning': yourName=='Daniel','label-success': yourName!='Daniel'}"> 

内の条件付きでクラスを追加.com/questions/42017246/angular2-toggle-icons-inside-ngfor/42017945#42017945助けるかもしれません。 – Kuncevic

+0

上記の質問を参照してください、私は同じ問題がありました。同じスタイルを使用することによって、ある値が真のときにラベルを追加し、それが偽のときはその値を削除するようにangleを指示します。従来のタグ 'class =" label "' –

答えて

7

[ngClass]では、単一オブジェクトのキーでsingelクラス名を渡すことができます。 // stackoverflowの:だからまた、あなたが[class.classname]="condtionexpression"

<h1 
    class="label" 
    [class.label-warning]="yourName=='Daniel'" 
    [class.label-success]="yourName!='Daniel'"> 
+0

を使ってラベルを追加するオブジェクトキーに複数のクラス名を渡すことは許されていますが、矛盾する評価では追加できません –

2

あなたは条件付きでこのような必要なラベルクラス(例えばlabel-success)追加することができます。

<h1 *ngIf="yourName" class="label" 
[class.label-warning]="yourName != 'Daniel'" 
[class.label-success]="yourName=='Daniel'"> 
    Hello {{yourName}}! 
</h1> 

デフォルトではlabelのクラスがあり、条件に応じて追加のクラスを追加します。

関連する問題