我们如何设置角度为2

时间:2017-01-09 22:40:34

标签: angular angular2-forms

我有一个模型驱动的表单,想要根据无线电输入显示字段。 代码: -

       <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>

将错误视为“无法读取未定义的属性值” 因为没有选择无线电。

如何指定选择第一个作为默认值。

3 个答案:

答案 0 :(得分: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"};
}

答案 1 :(得分:1)

试试这个:

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

答案 2 :(得分:0)

您收到此错误是因为尚未创建selection formControl。有两种可能的解决方法。

  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. 在呈现视图之前准备好表单。(即在组件的构造函数中准备表单。)

  3. 在创建表单控件时,可以给出

    和任何表单控件的默认值。

    例如,在您的情况下,您可以设置selection表单控件的默认值,如下所示。

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