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
}
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
https://github.com/angular/angular/issues/3406,
https://github.com/angular/angular/issues/6311
If this helps you,
<input type="checkbox" (ngModelChange)="mychange($event)" [ngModel]="mymodel">
mychange(val)
{
console.log(val); // updated value
}
(change)
is different, as said in his github issues; "click is a DOM event, not related to the higher level ngModel. The proper event for this is ngModelChange."
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, "");
}
}
Use the (ngModelChange)
event to detect changes on the model
Success story sharing
(ngModelChange)
wrapped in parentheses -- not justngModelChange
ngModelChange
is now deprecated. Check it hereFormControlName
directive github.com/angular/angular/blob/master/packages/forms/src/… ThengModelChange
fromNgModel
is not deprecated github.com/angular/angular/blob/master/packages/forms/src/…ngModelChange
is only deprecated in reactive forms and not in template-driven forms.