2017-07-31 43 views
2

我有这样的反应角业态结构如何禁用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

回答

2

,你需要告诉什么this.Personal的是,现在你刚才宣布它作为一个FormGroup,没有别的。

所以,你可以后做建筑形式:

this.Personal = this.myForm.get('Personal') 

然后,你可以关闭之:

this.Personal.disable(); 

DEMO:http://plnkr.co/edit/QAhY6A9950jqrgzvjVKu?p=preview

+0

有没有一种方法来默认初始化一个字段组? –

+0

如在禁用或启用 –

+0

他们的方式,我看到它,你可以在建立一个表单后,如果你想最初禁用它的话。 http://plnkr.co/edit/h5ijJUl6qXJsYECgR0a3?p=preview – Alex

0

您可以禁用整个表格 this.Personal.disable();

,或者您可以枚举所有表单控件,并禁用/启用他们通过一个

for (var control in this.Personal.controls) { 
    this.Personal.controls[control].disable(); 
} 
+0

this.Personal.disable( );不适用于嵌套的FormGroup bt适用于整个表单。 –

1

一个可以禁用这样的控制。所以你的表单生成器应该像

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嵌套在个人 –

相关问题