J'essaie d'utiliser la sortie de modification d'un md-radio-buttons comme suit:
<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);
}
Cela semble toujours être une étape derrière les boutons radio. c'est-à-dire que lorsque vous passez d'une sélection de radio A à radio B, la console.log enregistre la valeur de la radio A.
Toute aide serait très appréciée.
À votre santé,
P
Cela est dû au fait que l'événement change est déclenché avant la mise à jour du modèle. Donc, votre propriété selected
a la valeur précédente. Modifiez votre code en suivant pour obtenir l'événement sur (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>
... et dans votre classe, procédez comme suit:
import { MdRadioChange } from '@angular/material';
// ...
radioChange(event: MdRadioChange) {
this.filter['property'] = event.value;
console.log(this.filter);
}
Lien vers démonstration de travail .
Définissez la propriété name
et l'événement change
sur mat-radio-group
dans le fichier .html:
<mat-radio-group
name="radioOpt1"
[(ngModel)]="selectedRadio"
(change)="radioChange($event)">
<mat-radio-button *ngFor="let opt of options"
[value]="opt">{{opt}}</mat-radio-button>
</mat-radio-group>
Puis dans le fichier Component.ts:
import { MatRadioChange } from '@angular/material';
...
radioChange($event: MatRadioChange) {
console.log($event.source.name, $event.value);
if ($event.source.name === 'radioOpt1') {
// Do whatever you want here
}
}