2016-11-14 2 views
0

Ich habe ein Array wie dieseangular2 Zweiweg für Radioknopf Bindung

erstellt
this.list= [{ 
     id: 1, 
     value: 'One', 
     checked: true 
    }, 
     { 
     id: 2, 
     value: 'Two' 
     }]; 

und ich versuchte, Zwei-Wege-Bindung wie diese

<ul *ngFor="let data of list;"> 

      <div class="radio" > 
       <label> 
       <input type="radio" name="sex" [(ngModel)] = "data.checked" [checked]="data.checked">{{data.value}} 
</ul> 

zu tun, aber es funktioniert nicht i dynamisch wollen aktualisieren Sie die Variable überprüft, wenn Optionsfeld

+0

Sie kein Radio verwenden kann, Schaltfläche wie ein Kontrollkästchen. Sie müssen für jede Eingabe einen Wert deklarieren und eine andere Variable verwenden, um den ausgewählten Wert zu verarbeiten. – Polochon

+0

@Polochon es funktioniert, aber gibt es eine Möglichkeit, die anderen zu überprüfen Attribut falsch, denn wenn ich dies tun, macht es alle Felder, die ich auf True drücken – kohli

Antwort

1

Sie benötigen geklickt wird Wert hinzuzufügen:

@Component({ 
    selector: 'my-app', 
    template: ` 
    <ul *ngFor="let data of list;"> 
    <li class="radio"> 
     <input type="radio" 
      [value]="data.value" 
      name="sex" [(ngModel)]="user.sex">{{data.value}} 
    </li> 
</ul> 
    `, 
}) 
export class App { 

    constructor() { 
    this.user = { 
     sex: 'One' 
    } 
    this.list= [{ 
     id: 1, 
     value: 'One', 
     checked: true 
    }, 
     { 
     id: 2, 
     value: 'Two' 
     }]; 
    } 

} 
+0

es funktioniert nicht – kohli

+0

Mein Code funktioniert. –

1

Ich denke, was Sie brauchen, um ein Feld in der Komponente zu erstellen, ist der ausgewählte Wert der Optionsfeldgruppe zu halten und eine Zweiweg-Bindung an diesen Wert hinzuzufügen:

<ul> 
    <li *ngFor="let data of list"> 
     <input type="radio" 
       [value]="data.value" 
       name="sex" [(ngModel)]="selectedValue" /> 
    </li> 
</ul> 

{{selectedValue}} 


export class App { 
selectedValue:string; 
list= [{ 
     id: 1, 
     value: 'One' 
    }, 
     { 
     id: 2, 
     value: 'Two' 
     }]; 
}