2017-11-03 1 views
1

Ich versuche, Variable-gesteuerte Klasse (n) zu einem Element zusammen mit anderen Klassen mit ngClass hinzuzufügen.Angular 2 ngClass - Wenden Sie mehrere Klassen an, mit Klassenvariablen

Beispiel:

// inputExtraClass = 'form-control-sm' 

// Working 
<input class='form-control' [ngClass]="inputExtraClass" placeholder="Working"> 

// Not working 
<input class='form-control' [ngClass]="{inputExtraClass: true}" placeholder="Not working"> 

Plunker

+0

hoffen, oder fügen Sie verwenden sollten Selektor vor der Klasse, um sicherzustellen, dass es angewendet wird. [** answer **] (https://plnkr.co/edit/bMzEZnaeukMPeJXAxXze?p=preview) – Aravind

+0

Die Klasse, die in der Variablen inputExtraClass gespeichert ist, ist eine Bootstrap-Klasse, keine benutzerdefinierte Klasse. –

Antwort

0

Sie Ausdrücke in ngClass verwenden können:

<input class='form-control' [ngClass]="(addClassIfTrue) ? 'inputExtraClass' : ''" placeholder="Working">

+0

Ähnliche Antwort auf Alejandro, inputExtraClass ist eine Variable in der Komponente, nicht der tatsächliche Name der Klasse, so in einfache Anführungszeichen setzen würde die tatsächliche Klasse –

+0

Diese Zeichenfolge wird vom Benutzer angegeben (leere Zeichenfolge, wenn nicht angegeben), so kann nicht auf null gesetzt werden. Auf diese Weise [ngClass] = "inputExtraClass" kann ich auch nicht mehrere Klassen über ngClass setzen. –

0

Providing eine Art vollständige Antwort auf Ihre Frage,

Do: <input class='form-control' [ngClass]="{'inputExtraClass': true}" placeholder="Not working">

und wenn Sie mehr als eine Klasse oder einen Schalter zwischen den Klassen möchten, können Sie auch wie etwas tun

<input class='form-control' [ngClass]="{'inputExtraClass': true, 'notInputExtraClass': !true }" placeholder="Not working"> 

diese Art und Weise oben, wird es entweder eine Klasse oder die andere

sein

Sie können auch jede andere Variation aply Sie dieses mögen, oder eine Eigenschaft in Ihrer Komponente wie diese machen:

toggleClass: boolean = true; 

und in Ihrem html:

<input class='form-control' [ngClass]="{ 'inputExtraClass': toggleClass, 'notInputExtraClass': !toggleClass }" placeholder="Not working"> 

gleiche Idee, und dann könnten Sie eine Methode erstellen und die toggleClass Eigenschaft ändern oder was auch immer :) es Sie Artklasse Komponentenebene half

+0

inputExtraClass ist eine Variable in der Komponente (inputExtraClass = 'form-control-sm'). Wenn ich 'inputExtraClass' eingeben würde: true, würde es bedeuten, dass inputExtraClass der tatsächliche Klassenname ist, nein? –

+0

Sollte funktionieren, zum Beispiel in einer meiner Anwendungen ich habe: [ngClass] = "{dropdown:! ShouldDisplayDropdown}" und es ist in der Komponente wie folgt definiert: driddow: string = "dropdown"; und sorry, dass ich nicht mit Ihrem Plunkr ATM spielen kann, haben Sie jetzt eine schlechte Verbindung –

+0

Können Sie dies [Plunker] (https://plnr.r.co/edit/NGmgkk5UWkg1lEJ1DzYA?p=preview) aktualisieren? –

Verwandte Themen