2017-06-28 16 views
-3

条件に基づいてCSSクラスを変更します。私はこれを使用しようとしています:条件に基づいてCSSクラスプロパティを変更する(角度2のngIf)

<div *ngIf="dropDownBg==='Active'"> 
<style type="text/css"> 
.ui-select-toggle{ 
    background: green !important; 
    } 
</style> 

</div> 


<div *ngIf="dropDownBg==='Suspended'"> 
<style type="text/css"> 
.ui-select-toggle{ 
    background: red !important; 
    } 
</style> 

</div> 

<div *ngIf="dropDownBg==='Disabled'"> 
<style type="text/css"> 
.ui-select-toggle{ 
    background: grey !important; 
    } 
</style> 

</div> 

しかし、これは動作しません。デフォルトではブラウザは無視されており、divs*ngIfで、最後のスタイルだけが他のスタイルを上書きします。以下は、ブラウザの解釈は次のとおりです。

enter image description here UPDATE:私は内部的に、私は任意のコントロールを持っていないクラスのUI-SELECT-toggle'overを使用していますng-selectドロップダウンを使用していますので、このシナリオでは、発生しました。だからWEIRD人がこの質問をd​​ownvoting、その点に注意してください。

これはコードです:

<div style="min-width: 200px;position: absolute;right: 0"> 
      <ng-select 
        [items]="items" 
        (selected)="selected($event)" 
        [active]="selectedItem" 
        (removed)="removed($event)" 
        placeholder="Select a number"> 
      </ng-select> 
</div> 

答えて

2

あなたが動的にこのような文書のスタイルシートを変更することはできません。代わりに、可能な状況のクラスを定義し、トグルのクラスを変更します。

することは、このような何か試してみてください:

.ui-select-toggle    { /* whatever */ } 
.ui-select-toggle.suspended { background: red; } 
.ui-select-toggle.active  { background: green; } 

をそしてトグルのクラスを変更:

<div 
    class="ui-select-toggle" 
    [class.suspended]="dropDownBg==='Suspended'" 
    [class.active]="dropDownBg==='Active'" 
> 
</div> 

あなたがメインクラスに共通のプロパティを定義できるように、要素が(、いくつかのCSSクラスを持つことができますui-select-toggle)と、セカンダリクラスの各状態に固有の追加のプロパティ。

+1

残念ながら私はそれを行うことはできません。私はこのクラスを使用するng-selectを使用しています ui-select-toggleを内部的に切り替えます。私は条件に基づいてこのクラスのプロパティを変更したい。 –

+0

ng-selectのラッパーのクラスを変更することはできますか?その場合は、同じ手法を親要素にのみ使用できます。.suspended .ui-select-toggle {background:red; }など。そして内部の角成分のクラスを変更してください:

+0

これは見た目です。ラッパーを変更しても、それは影響しません。 –

0
あなたは3つのスタイル を作成する必要がありますあなたの場合は

、あなたはディレクティブ

[NgClass] = "{style1: condition, style2: condition, style3: condition} 
0

を使用し、それは(ここではバックグラウンドである)だけつのプロパティだ場合、あなたはこれを行うことができます:あなたは

<div [style.background]="...">...</div> 

を場合によっては、次のようになります。

<div [style.background]="dropDownBg === 'Active' ? 'green' : dropDownBg === 'Suspended' ? : red : dropDownBg === 'Disabled' ? 'grey' : 'black'">...</div> 

黒はあなたのフォールバックカラーです。

関連する問題