2016-06-16 38 views
5

Ho un elemento a cui voglio applicare una determinata classe, quindi ho usato un condizionale [class.active] che sta guardando le modifiche osservabili. Ma quando i Spostare non si applica al seguente li e si rompe l'intera applicazione:

<li *ngFor="let room of activeRooms$ | async" [class.active]="room.name === (currentRoomName$ | async)">

ho scoperto che se io uso per [ngClass], invece, funziona perfettamente:

<li *ngFor="let room of activeRooms$ | async" [ngClass]="{ active: room.name === (currentRoomName$ | async)}">

Perché è quello? Qualcuno può far luce su questo?

Grazie!

risposta

1

non si può dire con certezza, ma solo idee paio di quello che si potrebbe verificare:

  • Change osservabile EventEmitter, che svolgono in modo leggermente diverso; puoi leggere here per maggiori informazioni.
  • L'evento osservabile può essere generato da qualche parte al di fuori di NgZone angolare; in tal caso, avresti bisogno di iniettare nel componente e aggiornare la vostra proprietà attraverso qualcosa di simile:

    zone.run(() => this.prop = newValue);

In questo modo angolare potrebbe vedere le modifiche che non sarebbe stato in grado di vedi altrimenti. Puoi leggere ulteriori informazioni sulle zone qui: another link