2017-07-31 2 views
2

j'ai ce réactif Structure de forme angulaireComment désactiver tous les formcontrols dans un FormGroup

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, 
         }) 
       }) 
} 

si je fais

this.FIRST_NAME.disable 

il désactiver le FormControl

comment désactiver tous les formcontrols en personnel FormGroup

Répondre

2

Si vous souhaitez désactiver le groupe, vous devez dire ce que this.Personal est, maintenant, vous venez de déclarer comme un FormGroup, rien d'autre.

Alors vous pouvez le faire après construction de la forme:

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

Ensuite, vous pouvez tout simplement désactiver avec:

this.Personal.disable(); 

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

+0

existe-t-il un moyen d'initialiser un groupe de champs par défaut? –

+0

comme étant désactivé ou activé –

+0

Comme je le vois, vous pouvez juste le faire après avoir construit un formulaire si vous voulez le désactiver au départ. http://plnkr.co/edit/h5ijJUl6qXJsYECgR0a3?p=preview – Alex

0

Vous pouvez désactiver le formulaire entier this.Personal.disable();

ou vous pouvez énumérer tous les contrôles de formulaire et désactiver/activer les un par un

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

this.Personal.disable () ne fonctionne pas pour FormGroup imbriqué bt fonctionne pour l'ensemble du formulaire. –

1

vous pouvez désactiver le contrôle comme ça. donc votre constructeur de formulaire devrait être comme

createForm(): void 
    { 
     this.myForm = this.fb.group({ 
          Personal:this.fb.group({ 
           FIRST_NAME:{value:this.FIRST_NAME,, disabled: true}, 
           LAST_NAME:this.LAST_NAME, 
          }) 
        }) 
    } 

et ensuite si vous voulez désactiver/activer. utiliser la méthode suivante

this.myForm.get('Personal.FIRST_NAME').disable(); 
this.myForm.get('Personal.FIRST_NAME').enable(); 
+0

ne fonctionne pas comme FIRST_NAME est imbriqué à l'intérieur Personal –