2017-07-31 42 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嵌套在個人 –

相關問題