I am trying to use the change output of an md-radio-buttons as follows:
<md-radio-group [(ngModel)]="selected">
<md-radio-button *ngFor="let a of array" [value]="a"
(change)="radioChange()">
{{a}}
</md-radio-button>
</md-radio-group>
TS:
selected: string;
filter: any;
radioChange() {
this.filter['property'] = selected;
console.log(this.filter);
}
This always seems to be one step behind the radio buttons. i.e. when changing selection from radio A to radio B, it will console.log the value of radio A.
Any help would be much appreciated.
Cheers,
P
This happens because the change event is fired before the model has been updated. So your selected
property has the previous value. Change your code to following to get the event on (change)
:
<md-radio-group [(ngModel)]="selected">
<md-radio-button *ngFor="let a of array" [value]="a" (change)="radioChange($event)">
{{a}}
</md-radio-button>
</md-radio-group>
... and in your class, do the following:
import { MdRadioChange } from '@angular/material';
// ...
radioChange(event: MdRadioChange) {
this.filter['property'] = event.value;
console.log(this.filter);
}
Link to working demo.