Angular 2 NgModelChange Old Value


Answer :

This might work

(ngModelChange)="onModelChange(oldVal, $event); oldVal = $event;" 

or

(ngModelChange)="onModelChange($event)" 
oldValue:string; onModelChange(event) {   if(this.oldValue != event) {     ...   }   this.oldValue = event; } 

Just for the future

we need to observe that [(ngModel)]="hero.name" is just a short-cut that can be de-sugared to: [ngModel]="hero.name" (ngModelChange)="hero.name = $event".

So if we de-sugar code we would end up with:

<select (ngModelChange)="onModelChange()" [ngModel]="hero.name" (ngModelChange)="hero.name = $event">

or

<[ngModel]="hero.name" (ngModelChange)="hero.name = $event" select (ngModelChange)="onModelChange()">

If you inspect the above code you will notice that we end up with 2 ngModelChange events and those need to be executed in some order.

Summing up: If you place ngModelChange before ngModel, you get the $event as the new value, but your model object still holds previous value. If you place it after ngModel, the model will already have the new value.

SOURCE


Example with input field...

<div *ngFor="let value of values">{{value}}     <input [(ngModel)]="value" (focus)="old=value" (ngModelchange)="doSomething(old, value)"> </div>  doSomething(oldVal, newVal) {     // some code } 

Comments

Popular posts from this blog

Converting A String To Int In Groovy

"Cannot Create Cache Directory /home//.composer/cache/repo/https---packagist.org/, Or Directory Is Not Writable. Proceeding Without Cache"

Android How Can I Convert A String To A Editable