example - Angular2 ngModelChange valor anterior
ngmodel angular 6 (3)
Así que encontré una posible solución algo rara (al menos para mí) para esto con menos cambios en el código en cuestión. Entonces, al asignar el atributo (ngModelChange)
antes de [(ngModel)]
lo que obtengo está siguiendo con el mismo controlador:
changed *older value* *new value*
Obtengo el nuevo valor en this.text
así:
setTimeout(() => console.log(this.text), 0);
¿Hay alguna manera de obtener el valor anterior (último) de un campo en ngModelChange? Lo que tengo va algo como esto.
HTML
<input type="text" [(ngModel)]="text" (ngModelChange)="textChanged($event)">
Entrenador de animales
private textChanged(event) {
console.log(''changed'', this.text, event);
}
Lo que obtengo es
changed *newvalue* *newvalue*
Por supuesto, puedo mantener el valor más antiguo utilizando otra variable, pero ¿hay alguna manera mejor?
Lo que puedes hacer es,
DEMO: http://plnkr.co/edit/RXJ4D0YJrgebzYcEiaSR?p=preview
<input type="text"
[ngModel]="text" //<<<###changed [(ngModel)]="text" to [ngModel]="text"
(ngModelChange)="textChanged($event)">
private textChanged(event) {
console.log(''changed'', this.text, event);
this.text=event; //<<<###added
}
todo lo que necesita hacer es poner (ngModelChange) = "textChanged ($ event)" a la izquierda del elemento [(ngModel)] en la etiqueta html, como:
<input (whatever...) (ngModelChange)="textChanged($event)" [(ngModel)]="text">
De esta manera, dentro de textChanged (evento), el elemento al que está enlazado aún tiene el valor anterior, mientras que el evento es el nuevo