如何禁用FormGroup内的所有FormControls
问题描述:
我有这样的反应角业态结构如何禁用FormGroup内的所有FormControls
myForm: FormGroup;
Personal: FormGroup;
FIRST_NAME: FormControl;
LAST_NAME: FormControl;
ngOnInit(): void {
this.createFormControls();
this.createForm();
}
createFormControls() {
this.FIRST_NAME = new FormControl('',[Validators.required]);
this.LAST_NAME = new FormControl('',[Validators.required]);
}
createForm(): void
{
this.myForm = this.fb.group({
Personal:this.fb.group({
FIRST_NAME:this.FIRST_NAME,
LAST_NAME:this.LAST_NAME,
})
})
}
,如果我做
this.FIRST_NAME.disable
它禁用FormControl
如何禁用个人所有FormControls FormGroup
答
,你需要告诉什么this.Personal
的是,现在你刚才宣布它作为一个FormGroup,没有别的。
所以,你可以后做建筑形式:
this.Personal = this.myForm.get('Personal')
然后,你可以关闭之:
this.Personal.disable();
答
您可以禁用整个表格 this.Personal.disable();
,或者您可以枚举所有表单控件,并禁用/启用他们通过一个
for (var control in this.Personal.controls) {
this.Personal.controls[control].disable();
}
+0
this.Personal.disable( );不适用于嵌套的FormGroup bt适用于整个表单。 –
答
一个可以禁用这样的控制。所以你的表单生成器应该像
createForm(): void
{
this.myForm = this.fb.group({
Personal:this.fb.group({
FIRST_NAME:{value:this.FIRST_NAME,, disabled: true},
LAST_NAME:this.LAST_NAME,
})
})
}
然后如果你想禁用/启用。如果要禁用组使用以下方法
this.myForm.get('Personal.FIRST_NAME').disable();
this.myForm.get('Personal.FIRST_NAME').enable();
+0
不起作用,因为FIRST_NAME嵌套在个人 –
有没有一种方法来默认初始化一个字段组? –
如在禁用或启用 –
他们的方式,我看到它,你可以在建立一个表单后,如果你想最初禁用它的话。 http://plnkr.co/edit/h5ijJUl6qXJsYECgR0a3?p=preview – Alex