Formulaires Angular 2
Dans ce chapitre, nous allons présenter comment créer un formulaire Angular à l'aide de composants et de modèles.
En utilisant les modèles Angular, nous pouvons créer divers types de formulaires, tels que des formulaires de connexion, des formulaires de contact, des formulaires de détail de produit, etc., et nous pouvons également ajouter une validation des données aux champs de ces formulaires.
Ensuite, nous allons implémenter la fonctionnalité du formulaire étape par étape.
Créer le projet
Importez le projet initial.
Pour la création complète du projet, reportez-vous à :Configuration de l'environnement Angular 2 TypeScript
Ou téléchargez directement le code source : Cliquez ici pour télécharger
Après extraction, renommez le répertoire en angular-forms et modifiez ce qui suit dans le fichier angular-forms/package.json :"name": "angular-quickstart"en"name": "angular-forms"。
Une fois terminé, nous exécutonscnpm installpour charger les paquets de dépendances.
Créer le modèle Site
Ce qui suit crée une simple classe de modèle Site, contenant trois champs obligatoires : id, name, url, et un champ facultatif : alexa.
Créez le fichier site.ts dans le répertoire angular-forms/app, avec le code suivant :
Fichier app/site.ts :
Dans le code suivant, les champs marqués comme public sont des champs publics, et un point d'interrogation (?) ajouté après alexa indique un champ facultatif.
Créer un composant de formulaire
Chaque formulaire Angular se compose de deux parties : un template basé sur HTML et un composant basé sur du code, qui gère les données et l'interaction utilisateur.
Créez le fichier site-form.component.ts dans le répertoire angular-forms/app, avec le code suivant :
fichier app/site-form.component.ts :
Dans l'exemple, le décorateur Component et le modèle Site sont importés.
Le sélecteur @Component "site-form" signifie que nous pouvons utiliser une balise<site-form>pour insérer ce formulaire dans le template parent.
La propriété templateUrl pointe vers un fichier modèle HTML autonome nommé site-form.component.html.
La propriété diagnostic est utilisée pour renvoyer la forme JSON de ce modèle.
Définir le module racine de l'application
Modifiez app.module.ts pour définir le module racine de l'application, qui spécifie les références externes et déclare les composants qui appartiennent à ce module, tels que SiteFormComponent.
Comme les formulaires pilotés par le template ont leur propre module, nous devons ajouter FormsModule au tableau imports de l'application afin de pouvoir utiliser les formulaires.
Le code du fichier app/app.module.ts est le suivant :
Le fichier app/app.module.ts :
Créer le composant racine
Modifier le fichier du composant racine app.component.ts pour y placer SiteFormComponent.
fichier app/app.component.ts :
Créer un modèle initial de formulaire HTML
Créer le fichier de modèle site-form.component.html, avec le code comme indiqué ci-dessous :
fichier app/site-form.component.html :
L'attribut required rend le champ obligatoire ; s'il n'est pas défini, il est facultatif.
Saisissez la commande suivante dans le répertoire angular-forms :
cnpm install bootstrap --save
Ouvrez le fichier index.html et ajoutez les liens de style suivants dans la section <head> :
Exécuteznpm startPuis visitez : http://localhost:3000/, la sortie est la suivante :

Utilisez ngModel pour la liaison de données bidirectionnelle
Ensuite, nous utilisons ngModel pour la liaison de données bidirectionnelle, et mettons à jour les propriétés du composant en écoutant les événements DOM.
Modifiez app/site-form.component.html pour lier notre formulaire au modèle à l'aide de ngModel. Le code est présenté ci-dessous :
fichier app/site-form.component.html :
-
Chaque élément input a un attribut id, qui est utilisé par l'attribut for de l'élément label pour associer le label à l'input correspondant.
-
Chaque élément input a un attribut name, dont le module forms d'Angular a besoin pour enregistrer le contrôle pour le formulaire.
Exécutez l'exemple ci-dessus ; le résultat de sortie est le suivant :

{{diagnostic}} Il est uniquement utilisé pour afficher des données lors des tests.
Nous pouvons également utiliser ngModel pour suivre l'état de modification et la validation de validité. Il utilise trois classes CSS pour mettre à jour les contrôles afin de refléter l'état actuel.
| State | Classe lorsque vrai | Classe lorsque faux |
|---|---|---|
| Le contrôle a été visité |
ng-touched
|
ng-untouched
|
| La valeur du contrôle a changé |
ng-dirty
|
ng-pristine
|
| La valeur du contrôle est valide |
ng-valid
|
ng-invalid
|
De cette façon, nous pouvons ajouter du CSS personnalisé pour refléter l'état du formulaire.
Créez le fichier forms.css dans le répertoire angular-forms. Le code est le suivant :
fichier forms.css :
Ouvrez le fichier index.html et ajoutez les liens de style suivants dans la section <head> :
Modifiez app/site-form.component.html. Le code est présenté ci-dessous :
fichier app/site-form.component.html :
Dans le template, en liant l'attribut hidden de l'élément div aux propriétés du contrôle name, nous pouvons contrôler la visibilité du message d'erreur pour le champ « name ».
Supprimez les données dans le champ name, et le résultat affiché est le suivant :

Ajouter un site web
Ensuite, nous créons un formulaire pour ajouter un site web. Ajoutez un bouton dans app/site-form.component.html :
fichier app/site-form.component.html :
Liez l'événement du bouton ci-dessus à une méthode du composant :
fichier app/site-form.component.ts :
Nous ajoutons un indicateur active au composant et l'initialisons à true. Lorsque nous ajoutons un nouveau site web, il définit l'indicateur active sur false, puis le remet rapidement à true via une fonction setTimeout rapide.
Soumettre le formulaire via ngSubmit
Nous pouvons utiliser la directive NgSubmit d'Angular pour soumettre le formulaire et le lier à la méthode SiteFormComponent.submit() via le mécanisme de liaison d'événements.
Nous avons défini une variable de référence de modèle #siteForm et l'avons initialisée à "ngForm".
Cette variable siteForm fait maintenant référence à la directive NgForm, qui représente le formulaire dans son ensemble.
Le code complet du fichier site-form.component.ts est le suivant :
fichier app/site-form.component.ts :
app/site-form.component.html Le code complet est le suivant :
fichier app/site-form.component.html :
Dans le template, nous lions l'attribut hidden à la propriété SiteFormComponent.submitted.
Le formulaire principal est visible dès le début car la propriété submitted est false. Lorsque nous soumettons le formulaire, il est masqué, et la propriété submitted est true :
La structure finale des répertoires est :

Le code source utilisé dans cet article peut être téléchargé comme suit, en excluant les répertoires node_modules et typings.
Téléchargement du code source
Le GIF de démonstration de l'exemple complet est le suivant :
