2017-10-04 2 views
2

Dans Angular 1 (1.5), le contrôleur de formulaire avait une méthode $ setSubmitted() qui vous permettait de définir par programme l'indicateur. $ Submitted sur true.Angular 2 - Forms - Définir NgForm .submitted à true via NgForm Object

Comment puis-je le faire en 2 via l'objet NgForm? Je ne veux pas utiliser le modèle, aka (ngSubmit) = "".

J'ai essayé .ngSubmit.emit(), mais il ne définit pas .submit à true.

Répondre

1

ngSubmit est en fait un émetteur d'événements (un @Output() de liaison) qui vous avertira après formulaire a été soumis - il le fait en écoutant l'événement DOM pour présenter sur l'élément de forme hôte. Par conséquent, même si vous n'utilisez pas ngSubmit, le formulaire sera toujours envoyé si l'utilisateur clique sur un bouton d'envoi dans le formulaire.

Vous peut définir la forme soumise à drapeau à true manuellement à l'aide de la méthode, par exemple onSubmit via un bouton

<button type="button" (click)="theForm.onSubmit($event)">Submit</button> 

.. mais dans mon expérience avec des formes angulaires ce serait tout à fait inhabituel de devoir régler manuellement (la directive ngForm et ngSubmit émetteur d'événements devrait être tout ce que vous devez gérer le formulaire). Y a-t-il une raison pour laquelle vous auriez besoin de cela?

+0

J'ai le même problème. La raison pour laquelle je dois soumettre le formulaire via ngSubmit.emit() est que le bouton est en dehors du formulaire dans un composant parent. J'ai besoin que l'indicateur soumis soit défini sur true, car je l'utilise dans ma logique de message de validation. – AntonK

+0

L'appel de onSubmit() au lieu de ngSubmit.emit() a résolu le problème pour moi. – AntonK

+0

Situation similaire à AntonK. Pour sauvegarder une longue explication, je n'ai aucun contrôle sur le template ou le bouton qui déclencherait un submit, donc je dois le faire dans le code JS. – mrshickadance