2017-05-29 13 views
0

要素からCSSクラス名を追加または削除する際に問題があります。 それは、クラスを追加していないようですが、他のクラスが上書きされている可能性があります。同じ要素のインスタンスが複数あるうちに、他のクラスの要素からクラス名を追加または削除する方法

<div class="my-div class-a"></div> 

この部門にclass-bを追加します。

thisDivElement.className = 'class-b'; 

これはmy-div class-aを削除し、代わりにclass-bを貼り付けます。

<div class="class-b"></div> 

angle2では、他のクラスのオーバーヘッドのないクラスを追加/削除する方法を教えてください。それを行う正しい方法のためのアドバイスをしてください。

+0

重要!要素には1つ以上のインスタンスがあることに注意してください。特定の要素からクラスを追加/削除したい – AngularOne

答えて

0

は角ドキュメントから撮影:

<some-element [ngClass]="{'first': true, 'second': true, 'third': false}">...</some-element> 

あなたがコードに設定された変数で真/偽の値を置き換えることにより、アクティブであるかのクラス変更することができます。

HTML:

<some-element [ngClass]="{'first': firstClassActive, 'second': secondClassActive, 'third': thirdClassActive}">...</some-element> 

活字体:ここ

export class AppComponent { 
    firstClassActive: boolean = true; 
    secondClassActive: boolean = false; 
    thirdClassActive: boolean = false; 
} 

より詳細な例:https://angular.io/docs/ts/latest/api/common/index/NgClass-directive.html

私はまた、あなたがあなたへのより直接的なアクセスを提供します。この使用してjQueryのを、行うことができることを指摘しなければなりませんDOMの要素 - しかし、私の意見では角のテンプレートバインディングを貼っておく方が良い。

+0

私は何か重要なことを言及していないのはごめんなさい。私のdivがテンプレート内に複数のインスタンスを持っていて、特定のものだけを変更したい場合 – AngularOne

+0

私はいくつかのdivを持っていると、それらのすべてが新しいクラスを取得します... – AngularOne

+0

あなたが話しているdiv数に応じて、あまりにも多くはないので、私はあなたが別々にそれらを制御することができるように各divの変数を作成することをお勧めします。 制御するdivがたくさんある場合は、親コンポーネントから値を設定できるように、入力パラメータを使用して、それぞれのサブコンポーネントを作成することをお勧めします。 – Steveland83

関連する問題