2016-03-22 29 views
26

Come posso ottenere i valori dopo che un modello è cambiato? L'evento (change) si attiva prima del cambio del modello. Non voglio usare event.target.valueModifica evento angolare 2 - Modifiche al modello

<input type="checkbox" (change)="mychange(event)" [(ngModel)]="mymodel"> 

public mychange(event) 
{ 
    console.log(mymodel); // mymodel has the value before the change 
} 
+1

Possibile duplicato di [Angolare 2 che non fornisce lo stato corrente della casella di controllo] (http://stackoverflow.com/questions/34872843/angular-2-not-giving-current-state-of-checkbox) –

risposta

24

Questo è un problema noto. Attualmente devi usare una soluzione alternativa come mostrato nella tua domanda.

Questo funziona come previsto. Quando l'evento di modifica viene emesso ngModelChange (la parte (...) di [(ngModel)] non ha ancora aggiornato il modello legato:

<input type="checkbox" (ngModelChange)="myModel=$event" [ngModel]="mymodel"> 

Vedi anche

+1

Nota che Gunter usa '(ngModelChange)' racchiuso tra parentesi - non solo 'ngModelChange' –

32

Se questo ti aiuta,

<input type="checkbox" (ngModelChange)="mychange($event)" [ngModel]="mymodel"> 

mychange(val) 
{ 
    console.log(val); // updated value 
} 
+0

Questa risposta è utile, ma posso capire perché Gunter era la risposta scelta, perché sottolinea che' (cambia) 'è diverso, come detto nel suo problemi github; "click è un evento DOM, non correlato al livello superiore ngModel. L'evento appropriato per questo è ngModelChange." –

Problemi correlati