Angular2 formes réactives de supprimer erreur
Im essayant de définir une forme de contrôle d'état valide
this.currencyForm.controls['currencyMaxSell'].setErrors({smallerThan: true})
maintenant, je veux supprimer cette erreur.
Vous pouvez exécuter la validation
Essayez setError(null)
this.currencyForm.controls['currencyMaxSell'].updateValueAndValidity()
Essayez setError(null)
OriginalL'auteur Arman Gevorgyan | 2017-04-17
Vous devez vous connecter pour publier un commentaire.
Il suffit de régler la valeur de l'objet d'erreur
null
:Ou si vous souhaitez supprimer tous la validation de la commande utiliser
setErrors(null)
comme suggéré dans les commentaires.currencyForm.invalid
est vraiCe n'est pas correct ... discussion ici github.com/angular/angular/issues/21564
OriginalL'auteur unitario
Autant que je sache, Vous n'avez vraiment pas besoin d'utiliser
setErrors
méthode lorsque vous pouvez créer les validateurs personnalisés. Vous pouvez facilement créer des validateurs personnalisés pour votre formControl ou formGroup et à l'intérieur de votre programme de validation, vous avez juste besoin de retourner un ValidatorFn et vous ne devriez pas utilisersetErrors
méthode.Pour plus d'informations sur validateur personnalisé pour FormGroup, je vous suggère la lecture de ce l'article qui a résolu mon problème.
C'est mon code de travail:
setErrors
est utile lorsque vous souhaitez définir des erreurs retournées par le serveur après avoir soumis le formulaire, je ne suis pas sûr que les validateurs personnalisés peuvent être utilisés dans ces cas.l'argument de matchPassword ci-dessus... faut-il être de type FormGroup? C'est un groupe de validation de niveau, non???
Oui, vous avez raison. il fixe.
OriginalL'auteur Vahid
D'autres solutions semble ne pas fonctionner. Il ressemble angulaire pense que le contrôle n'est pas valide tant que les erreurs de propriété n'est pas null.
Aussi longtemps que vous voulez supprimer de la moindre erreur et laissez les autres il n'y a aucun moyen de le faire, mais manuellement. Cette fonction ci-dessous va supprimer une seule erreur spécifié en argument ale laissez les autres. Il va assurez-vous également que si vous supprimez l'erreur de la commande ne sera valable.
N'hésitez pas à modifier cette question et de le rendre plus lisible.
AVERTISSEMENT: JE L'AI TESTÉ DANS ANGULAIRE 6
OriginalL'auteur karoluS
Pour supprimer une seule forme de contrôle d'erreur lors de l'exécution de la validation manuelle, procédez de la manière suivante:
Cela ne fera que mettre à jour la valeur de l'erreur spécifiée, et n'effacera aucune validation antérieure, vous pouvez avoir fait, par opposition à
setErrors(null)
, qui annule l'ensemble des erreurs objet du contrôle.si j'ai besoin de annule toutes les erreurs de tous les contrôles dans un formulaire comme
myFormGroup.controls.setErrors(null)
est-il de la chance ?Pour moi, c'laisser FormControl comme non valide.
OriginalL'auteur affbedran
Si vous êtes à la définition de la erro manuellement, vous pouvez utiliser setValue() pour l'activer à nouveau valides.
OriginalL'auteur Marcio LSA
À l'aide Angulaire 7, aucune des solutions présentées ici ont travaillé pour moi.
Je devais gérer mon erreur manuellement dans mon validateur personnalisé qui fonctionne avec plusieurs champs de formulaire.
L'exemple ci-dessous vérifie si la différence entre les deux champs de formulaire est assez grand. Les champs du formulaire en question ont de multiples autres validateurs (lte, gte), afin de compensation de toutes les erreurs avec setError(null) était hors de question, et j'essaie d'enlever mon erreur spécifique avec setError({minDifference: null}) toujours à gauche de la formControl dans un état non valide.
Pour être honnête, je n'aime pas vraiment ma solution, je m'attends à être en mesure de résoudre ce beaucoup plus simple, mais ne pouvais pas trouver un moyen de le faire.
OriginalL'auteur barney.balazs
Vous aurez besoin d'une combinaison de la meilleure réponse à votre question et la réponse dans les commentaires afin d'obtenir votre formulaire pour supprimer l'erreur et n'est valable pour re-présentation:
Si l'erreur est sur un contrôle spécifique sur la forme puis d'inclure le formulaire de contrôle:
OriginalL'auteur Code Janitor
Supprimer un seul formulaire de contrôle de l'erreur d'utiliser
.setErrors()
avec l'élément.Cela permettra de supprimer un seul élément d'erreur.
OriginalL'auteur Pk.