daniel
daniel

Reputation: 35733

Angular 2 change event - model changes

How can I get the values after a model has changed? The (change) event does fire before the model change. I do not want to use event.target.value

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

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

Upvotes: 63

Views: 133156

Answers (4)

abasar
abasar

Reputation: 1668

This worked for me

<input 
  (input)="$event.target.value = toSnakeCase($event.target.value)"
  [(ngModel)]="table.name" />

In Typescript

toSnakeCase(value: string) {
  if (value) {
    return value.toLowerCase().replace(/[\W_]+/g, "");
  }
}

Upvotes: 4

deanwilliammills
deanwilliammills

Reputation: 2787

Use the (ngModelChange) event to detect changes on the model

Upvotes: 2

G&#252;nter Z&#246;chbauer
G&#252;nter Z&#246;chbauer

Reputation: 657937

That's a known issue. Currently you have to use a workaround like shown in your question.

This is working as intended. When the change event is emitted ngModelChange (the (...) part of [(ngModel)] hasn't updated the bound model yet:

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

See also

Upvotes: 59

micronyks
micronyks

Reputation: 55443

If this helps you,

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

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

Upvotes: 52

Related Questions