Angulaire 2 - Comment se lier automatiquement les valeurs de l'objet de relatives aux Contrôles de Formulaire?
Je suis en utilisant model driven forms
et je suis à la recherche d'une meilleure façon de lier les données liées à formControlName
's parce que j'ai plus de 25 champs dans mon formulaire et je ne veux pas avoir à écrire de code pour tous les champs comme je l'ai écrit ci-dessous.
Modèle:
<input type="text"
class="form-control"
formControlName="firstName"
name="firstName"
placeholder="First Name"
required>
Composant:
this.refferalService.getReferringDataEdit(id).subscribe(
result => {
this.referringData = result.responseObject;
this.refferalForm.patchValue({
firstName: this.referringData.firstName
})
}
)
Est-il un moyen de le faire "automatiquement"?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire Comme ceci :
Plus loin dans votre code HTML à utiliser comme :
et le lier avec (ngSubmit) . Donc, chaque fois que vous frappez la soumettre , la valeur sera reflété dans myForm.de la valeur . myForm va stocker la forme de paires clé/valeur.
Dans la console , votre sortie sera :
Vous pouvez vous Référer à : http://blog.ng-book.com/the-ultimate-guide-to-forms-in-angular-2/
EDIt: étant donné que l'exigence était de sauvegarder les données à partir du service:
Dans votre vous abonner, il suffit de faire comme ceci :
this.refferalForm.setValue(this.referringData);
setValue attend un objet avec des Paires clé/valeurJe vois deux façons de le faire:
Première approche:
Vous pouvez créer une méthode générale pour les deux "formes" (new/edit) et créer le formulaire avec ou sans les valeurs, de cette façon:
DÉMO
Deuxième approche:
Dans cette approche, vous pouvez le lier automatiquement avec
[(ngModel)]
, de sorte que vous n'avez pas besoin de ne rien faire dans votre fichier de composant.Et dans l'utilisation du modèle [(ngModel)] pour lier la valeurs:
DÉMO
Vérifier les sources complètes pour les deux approches ci-dessus.
Remarque:
Bien qu'il n'y a rien nulle part en disant que vous ne pouvez pas utiliser les deux
FormsModule
avecReactiveFormsModule
, je n'avais pas aller avec cela, je préfère utiliser de la première approche.De lier la valeur dynamique ou le remplacement de la valeur de fromControl, nous pouvons utiliser patchValue méthode.