2017-01-09 32 views
2

我有一個模型驅動的窗體,並希望顯示基於無線電輸入的字段。 代碼: -如何設置角度2中的單選按鈕的默認值

 <div class="form-group"> 
      <md-radio-group class="form-control" id="radio1" formControlName="selection"> 
      <md-radio-button [value]="A" >A</md-radio-button> 
      <md-radio-button [value]="B">B</md-radio-button> 
      </md-radio-group> 
     </div> 

     <div class="form-group" *ngIf="selection.value=='A'"> 
      <md-input-container> 
       <textarea md-input placeholder="A" class="form-control" 
         formControlName="A" 
         style="border:none;"></textarea> 
      </md-input-container> 
     </div> 
     <div class="form-group" *ngIf="selection.value=='B'"> 
      <md-input-container> 
      <input md-input placeholder="B" class="form-control" 
        formControlName="B" 
        style="border:none;"> 
      </md-input-container>    
     </div> 

獲取誤差由於沒有選擇電臺「不能未定義讀取屬性‘值’」 。

如何指定選擇第一個作爲默認值。

回答

4

您需要通過一個string作爲收音機的值。現在Angular試圖找到名稱爲A的變量。

<md-radio-group class="form-control" [(ngModel)]="selection.value" 
       id="radio1" formControlName="selection"> 
    <md-radio-button [value]="'A'">A</md-radio-button> 
    <md-radio-button [value]="'B'">B</md-radio-button> 
</md-radio-group> 

如您在根據成分值分配給selection.value您初始化電臺:

class MyRadioComponent { 
    selection = {"value":"A"}; 
} 
+0

感謝馬特,但是我怎麼說,選擇一個默認的頁面加載時。有沒有財產?而這是一個反應形式,爲什麼ngModel在這。 Angular的新手。請幫助 – Sam

+0

您需要告訴Angular當收音機輸入改變時該怎麼做。例如,你可以用'[(ngModel)]''或''(change)''來做到這一點。查看md的github頁面上的最後一個代碼示例:https://github.com/angular/material2/blob/6e4fe5e4172bb150f8d46c9f007ba2c2ff5bdf3a/src/components/radio/README.md – Matt

+0

您可以初始化組件中的值。只需將'selection.value'分配給您選擇的值,例如在構造函數中或在聲明變量時的右邊。我編輯了我的帖子。 – Matt

0

您收到此錯誤,因爲selection formControl尚未created.There是這兩個可能的解決方案。

  1. safe navigation operator使用(?.)作爲*ngIf=selection?.value=='A'在訪問無線電的值。

    <div class="form-group" *ngIf="selection?.value=='A'"> 
        <md-input-container> 
         <textarea md-input placeholder="A" class="form-control" 
           formControlName="A" 
           style="border:none;"></textarea> 
        </md-input-container> 
    </div> 
    
  2. 準備好你的表格視圖呈現之前(即在組件的構造函數中準備表單。)

和默認值,以任何形式的控制可以當我們創建的給予形式控制。

例如在您的情況下,您可以按如下方式設置默認值selection窗體控件。

let myForm = new FormGroup({ selection : new FormControl('A') }) 
1

試試這個:

this.complexForm = fb.group({ 
         'name': [null, Validators.required], 
         'description': [null, Validators.required], 
         'file': ["A", Validators.required], 
        });