2017-09-22 1 views
1

Ich versuche, die Änderung Ausgabe einer MD-Radio-Tasten wie folgt zu verwenden:Werkstoff Optionsfeld Änderungsereignis Angular 4

<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); 
} 

Dies scheint immer zu sein treten Sie hinter die Radioknöpfe. d. h. wenn die Auswahl von Radio A auf Radio B geändert wird, wird der Wert von Radio A angezeigt.

Jede Hilfe wird sehr geschätzt.

Cheers,

P

Antwort

1

Dies geschieht, weil das Ereignis Wechsel ausgelöst wird, bevor das Modell aktualisiert wurde. Ihre selected-Eigenschaft hat den vorherigen Wert. Ändern Sie Ihren Code zu folgenden, um das Ereignis zu bekommen auf (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> 

... und in Ihrer Klasse, wie folgt vor:

import { MdRadioChange } from '@angular/material'; 
// ... 

radioChange(event: MdRadioChange) { 
    this.filter['property'] = event.value; 
    console.log(this.filter); 
} 

Link zu working demo.

+0

Großartig, danke. Das löst das Thema Radio Change perfekt. Trotzdem scheint die Pipe nicht zu aktualisieren. Neu bei SO, sollte ich diese Frage in zwei teilen und Ihre Antwort akzeptieren? Ist auch die Methode, $ Event mit Angular 2 Materialkomponenten zu übergeben, Teil einer breiteren Lektion, dass es gute Tutorials gibt? – Batters

+0

Split in zwei. Lies über Ereignisse hier: http://learnangular2.com/events/ – Faisal

+0

Mit Angular 5 musst du MatRadioChange von '@ angular/material' importieren, das Ereignis, das du in deiner radioChange() Methode erhältst, ist vom Typ MatRadioChange und du hast ' t muss das (change) Event auf alle Mat-Radio-Buttons setzen. Sie können es einfach auf Mat-Radio-Gruppe setzen. – herve