Angulaire Dynamiquement ajouter/supprimer des validateurs

J'ai un FormGroup défini comme ci-dessous:

this.businessFormGroup: this.fb.group({
    'businessType': ['', Validators.required],
    'description': ['', Validators.compose([Validators.required, Validators.maxLength(200)])],
    'income': ['']
  })

Maintenant, quand businessType est Other , je veux supprimer Validators.required validateur de description. Et si businessType n'est pas Other, je veux ajouter le Validators.required.

Je suis en utilisant le code ci-dessous pour ajouter dynamiquement/supprimer le Validators.required. Cependant, il efface l'existant Validators.maxLength validateur.

if(this.businessFormGroup.get('businessType').value !== 'Other'){
    this.businessFormGroup.get('description').validator = <any>Validators.compose([Validators.required]);               
} else {                
    this.businessFormGroup.get('description').clearValidators();               
}

this.businessFormGroup.get('description').updateValueAndValidity(); 

Ma question est, comment puis-je conserver les validateurs lors de l'ajout/retrait de la required validateur.

  • les validateurs de stockage comme un tableau , vous aurez besoin de gérer la liste des validateurs appliqué par vous-même
  • malheureusement, ce n'est pas possible, angulaire semble fusionner les appliquer validateurs en interne, par conséquent, vous pouvez uniquement appeler clear et set fonctions
  • c'est faux, les validateurs sont composés en une seule fonction et c'est tout. Avec l'implémentation actuelle de l'API, il n'est pas possible de vérifier les validateurs sont définies pour un contrôle
InformationsquelleAutor A J Qarshi | 2018-03-02