2017-10-12 3 views
0

Hier ist meine Komponentenklasse, wo ich versuche, ein Formular Optionsfeld Wert auf 1 zu setzen:Wie Radio-Button-Wert mit reaktiven Formular festlegen?

import { FormGroup, FormControl } from '@angular/forms'; 

export class myComponent implements OnInit{ 
    pageForm: FormGroup; 

    ngOnInit() { 
     this.pageForm = new FormGroup({ 
      'gndr': new FormControl(1) 
     }); 
    } 
} 

aber wenn die Seite geladen wird die Radiotaste nach Malen nicht gesetzt und beide Optionen sind leer:

<div class="form-group"> 
    <label for="gender">Gender</label> 
    <div class="radio"> 
     <label> 
      <input type="radio" name="gndr" formControlName="gndr" value=1>Male 
     </label> 
    </div> 
    <div class="radio"> 
     <label> 
      <input type="radio" name="gndr" formControlName="gndr" value=0>Female 
     </label> 
    </div> 
</div> 

Wie kann ich Radio Button-Wert von meiner Komponente Klasse laden?

Antwort

0

Wenn Sie möchten, dass eine dieser Optionen standardmäßig manuell überprüft wird, können Sie das Tag "checked" hinzufügen, z.

<div class="radio"> 
    <label> 
     <input type="radio" name="gndr" formControlName="gndr" value=1 checked>Male 
    </label> 
</div> 
<div class="radio"> 
    <label> 
     <input type="radio" name="gndr" formControlName="gndr" value=0>Female 
    </label> 
</div> 

bearbeiten

Wenn Sie den Standardwert von Typ string, setzen in der Formcontrol verwenden möchten:

component.ts

this.pageForm = new FormGroup({ 
     'gndr': new FormControl('1') 
    }); 

component.html

... 
<input type="radio" formControlName="gndr" value=1> 
... 

Wenn Sie den Standardwert ab Typennummer verwenden, in der Formcontrol gesetzt:

component.ts

this.pageForm = new FormGroup({ 
     'gndr': new FormControl(1) 
    }); 

component.html

... 
<input type="radio" formControlName="gndr" [value]=1> 
... 
+0

ja, aber wie kann ich Legen Sie es aus der Komponentenklasse basierend auf FormControl fest: 'gndr': new FormC ontrol (1) ... ich dachte es sollte den checked param setzen. Es gibt keinen Sinn, FormControl zu verwenden und in HTML hart zu codieren. –

+0

Ah, entschuldige missverstanden, das sollte funktionieren '' gndr ': new FormControl (' 1 ') ' – Andresson

+0

Nicht sicher, ob der Wert vom Typ string sein soll in Ihrer HTML-Ansicht .. aber das macht eigentlich keinen Sinn für den String-Typ von 1 und 0. Wenn Sie möchten, können Sie die Template-Syntax von 'value = 1' und' value = 0' in Ihren Eingaben ändern '[Wert] = 1' und' [Wert] = 0'. Um sicherzustellen, dass die Werte vom Typ Nummer sind. Dann sollte es mit deinem ursprünglichen ''gndr' funktionieren: new FormControl (1)' – Andresson

Verwandte Themen