J'ai un champ de mot de passe ainsi qu'un champ de mot de passe de confirmation et tout fonctionne bien si vous remplissez le formulaire de haut en bas. Toutefois, si je mets dans la confirmation de mot de passe / mot de passe, puis retournez pour modifier le champ Mot de passe, le champ de confirmation reste 'valide' à moins que je ne le modifie à nouveau pour déclencher le validateur personnalisé pour "vérifier si les mots de passe correspondent à"
formes.component.ts strong> - Le formulaire obtient sa "mise en page" SO-TO-Parlez de register.component.ts. C'est ainsi que je peux construire de manière dynamique des formulaires. P> register.component.ts strong> - Je n'ai pas pu comprendre comment transmettre le validateur personnalisé pour le champ Confirmer le mot de passe, donc je viens de passer des validateurs.Required, mais cela est simplement écrasé avec un validateur personnalisé lorsque la Le formulaire est construit. p> Merci d'avance pour votre aide. P> P>
3 Réponses :
Vous devez ajouter une validation à Formgroup pas sur le champ.
Un exemple:
Salut Tano. Je n'utilise pas la classe Formbuilder puisque je ne pouvais pas comprendre comment construire dynamiquement le formulaire si je l'ai utilisé. Je ne comprends pas bien pourquoi ne devrait pas avoir de validateurs sur les champs eux-mêmes plutôt que le groupe de formes. Lecture de la documentation On dirait que les validateurs sont placés sur les commandes de formulaire et ces contrôles de formulaire sont ajoutés à un groupe de formes. Pourriez-vous s'il vous plaît élaborer?
Si vous souhaitez valider un seul contrôle, vous devez ajouter à ce contrôle, si vous souhaitez valider plus de contrôles, vous devez ajouter le validateur au groupe ou ajouter le même validateur à chaque contrôle unique qui est lié à la règle de validation. .
Je voulais juste ajouter une solution possible et une solution de contournement pour que quiconque tente de construire des formes similaires.
J'ai mis à jour mon formes.component.html strud> Pour appeler une fonction sur (Keyup). < / p> dans mon car toutes ces entrées font partie du même groupe de formes, le formulaire n'est valide que lorsque toutes les entrées sont valides. Modification du mot de passe Une fois que le champ de confirmation de mot de passe a été validé causera le checkpasswordsmatch () code> pour exécuter et définir les erreurs manuellement pour le champ de confirmation si elles ne le font pas. P> P>
Essayez cette solution que vous avez besoin de la bibliothèque de validation NG2 pour cette
import { CustomValidators } from 'ng2-validation'; const password = new FormControl('', [Validators.required, Validators.pattern('^(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z]).{8,}$')]); const confirmPassword = new FormControl('', [Validators.required, CustomValidators.equalTo(password)]); this.form = this.fb.group({ password: password, confirmPassword: confirmPassword, });