Angular2 ngModelИзменить предыдущее значение
Есть ли способ получить предыдущее (последнее) значение поля на ngModelChange?
Что у меня есть что-то вроде этого
HTML
<input type="text" [(ngModel)]="text" (ngModelChange)="textChanged($event)">
Обработчик
private textChanged(event) {
console.log('changed', this.text, event);
}
Я получаю
changed *newvalue* *newvalue*
Конечно, я могу сохранить более старое значение, используя другую переменную, но есть ли лучший способ?
Ответы
Ответ 1
Таким образом, было найдено какое-то странное (по крайней мере для меня) возможное решение для этого с минимальными изменениями в рассматриваемом коде. Итак, назначая атрибут (ngModelChange)
перед [(ngModel)]
, что я получаю, следует с тем же обработчиком:
changed *older value* *new value*
Я получаю новое значение в this.text
следующим образом:
setTimeout(() => console.log(this.text), 0);
Ответ 2
Что вы можете сделать,
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
}
Ответ 3
все, что вам нужно сделать, это поместить (ngModelChange) = "textChanged ($ event)" слева от элемента [(ngModel)] в теге html, например:
<input (whatever...) (ngModelChange)="textChanged($event)" [(ngModel)]="text">
Таким образом, внутри textChanged (событие) элемент, с которым вы связываетесь, по-прежнему имеет предыдущее значение, а событие - новое.
Ответ 4
<input (ngModelChange)="preTextChanged($event)" [(ngModel)]="text" (ngModelChange)="postTestChanged($event)">
Таким образом, вы можете узнать предыдущее значение и следующее значение