ngmodeloptions example angular angular2-ngmodel

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