Est-il possible de définir manuellement l'état soumis sur vrai / faux dans Angular 6? Je peux markAsPristine et form.reset (), mais ceux-ci n'ont aucun effet sur l'état soumis ...
Le formulaire vit dans un modal et continue d'exister dans le DOM après sa soumission. Cela conduit à myForm.submitted étant vrai et déclenche des classes d'erreur CSS lorsque le modal s'ouvre à nouveau.
Merci d'avance!
SOLUTION: comme indiqué par @igor resetForm () est ce que je voulais, mais je ne l'utilisais pas correctement.
myForm.form.controls['description'].reset(); // works perfectly fine myForm.form.resetForm(); // is not a function myForm.resetForm(); // works perfectly fine
3 Réponses :
Appelez NgForm.resetForm
Documentation:
resetForm ()
Réinitialise le formulaire à une valeur initiale et réinitialise son état soumis.
Tu vois, je fais ça et ça efface le formulaire, mais soumis reste réglé sur vrai - vraiment bizarre
@Dbrandt - D'après la documentation, cela devrait fonctionner. Pourriez-vous créer un stackblitz ?
J'utilise reset () et cela efface le formulaire, cependant en utilisant resetForm () montre "myForm.form.resetForm n'est pas une fonction" - je vais créer un stackblitz sous peu
@Dbrandt génial, heureux de vous aider!
La fonction NgForm.resetForm () d'Angular prétend réinitialiser l'état soumis: https: // angular .io / api / forms / NgForm # resetform
Pour citer les documents:
resetForm () - Réinitialise le formulaire à une valeur initiale et réinitialise son statut soumis.
resetForm (valeur: any = undefined): void
value - any - La nouvelle valeur du formulaire. Optionnel. La valeur par défaut n'est pas définie.
renvoie nul
Si NgForm.resetForm n'est pas ce que vous recherchiez, lisez ci-dessous
FormGroup lui-même n'a pas d'option pour définir manuellement la propriété soumise. p>
Cependant, ce que vous pouvez faire est d'obtenir une référence à la directive et un ensemble soumis à ce sujet
Dans votre modèle
@ViewChild('myFormDirective', {read: FormGroupDirective}) myFormDirective: FormGroupDirective;
setSubmit(state) {
(this.myFormDirectiveas any).submitted = state;
}
et dans votre texte dactylographié
<form [formGroup]="myForm" #myFormDirective></form>
@igor myForm.submitted
Qu'entendez-vous par état soumis? Voulez-vous soumettre le formulaire par programme.?
@BearNithi le formulaire vit dans un modal et continue d'exister après la soumission, cela conduit à soumettre une valeur vraie et à déclencher des classes d'erreur CSS lorsque le modal s'ouvre à nouveau car le formulaire était techniquement déjà soumis.