我有一个模型驱动的表单,想要根据无线电输入显示字段。 代码: -
<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>
将错误视为“无法读取未定义的属性值” 因为没有选择无线电。
如何指定选择第一个作为默认值。
答案 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。有两种可能的解决方法。
在访问广播的价值时,使用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>
在呈现视图之前准备好表单。(即在组件的构造函数中准备表单。)
和任何表单控件的默认值。
例如,在您的情况下,您可以设置selection
表单控件的默认值,如下所示。
let myForm = new FormGroup({ selection : new FormControl('A') })