2015-12-29 14 views
5

che sto cercando di aggiungere più valori a * ngClass, quello usato per lavorare su versioni alpha precedenti e non sembra funzionare ora in angular2 beta:classi multiple in ngClass

<i *ngClass="['fa','fa-star']"></i> 

Produce un errore :

EXCEPTION: TypeError: Cannot read property 'add' of undefined in [['fa','fa-star'] in [email protected]:27]

Cosa mi manca qui?

risposta

16

È necessario utilizzare parentesi quadre per creare il binding di proprietà. Vedere this plunk

<i [ngClass]="['fa','fa-star']"></i> 
+0

Come si fa a cambiare queste classi in modo dinamico se si sta fornendo la matrice nel tuo modello? – Zyzle

+0

@Zyzle Vorrei creare una variabile per questa matrice e cambiarla dal mio componente (ad esempio '[ngClass] =" myDynamicArray "'). – alexpods

+0

Vorrei aggiornare la risposta quindi, come ho sottolineato, l'esempio originale non è diverso dal semplice fare di 'class =" fa fa-star "' nel modello – Zyzle

4

Se non si ha intenzione di essere la modifica di queste classi dinamicamente quindi utilizzando ngClass è eccessivo. Puoi semplicemente usare class="fa fa-star" nel tuo modello.

ngClass deve essere utilizzato quando si desidera attivare e disattivare questi in modo dinamico. C'è un esempio nella documentazione:

Il componente dovrebbe avere un metodo:

setClasses() { 
    return { 
    saveable: this.canSave,  // true 
    modified: !this.isUnchanged, // false 
    special: this.isSpecial,  // true 
    } 
} 

quindi utilizzare ngClass nel modello in questo modo:

<div [ngClass]="setClasses()">This div is saveable and special</div> 
+0

Li stavo cambiando dinamicamente, ma la tua soluzione è davvero interessante. – Sagi

+1

Ok, ma come pensi di cambiarli se hai codificato l'array in ngClass? – Zyzle

+0

Ho semplificato l'esempio in questione. Nel mio caso reale uso le classi dinamiche restituite da un metodo componente. – Sagi

4

È possibile anche costruire una stringa contenente diverse classi .

In questo caso additionalClass è una var @Input che contiene il nome di classe e attiva è un valore booleano che imposta la classe attiva

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