2
votes

Effacer l'état soumis d'un formulaire dans Angular6

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 commentaires

@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.


3 Réponses :


3
votes

Appelez NgForm.resetForm

Documentation:

resetForm ()

Réinitialise le formulaire à une valeur initiale et réinitialise son état soumis.


4 commentaires

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!



2
votes

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


0 commentaires

1
votes

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>


0 commentaires