Reputation: 35733
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
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
Reputation: 2787
Use the (ngModelChange)
event to detect changes on the model
Upvotes: 2
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
Reputation: 55443
If this helps you,
<input type="checkbox" (ngModelChange)="mychange($event)" [ngModel]="mymodel">
mychange(val)
{
console.log(val); // updated value
}
Upvotes: 52