J'utiliserais un formulaire réactif qui fonctionne très bien, et pour ce qui est de votre commentaire :
Existe-t-il un autre exemple simple pour celui-ci ? Peut-être le même exemple sans les boucles
Je peux vous donner un exemple. Tout ce que vous avez à faire, c'est d'imbriquer un FormGroup
et le transmettre à l'enfant.
Disons que votre formulaire ressemble à ceci, et vous voulez passer address
formgroup à l'enfant :
ngOnInit() {
this.myForm = this.fb.group({
name: [''],
address: this.fb.group({ // create nested formgroup to pass to child
street: [''],
zip: ['']
})
})
}
Ensuite, dans votre parent, il suffit de passer le groupe de formulaires imbriqués :
<address [address]="myForm.get('address')"></address>
Dans votre enfant, utilisez @Input
pour le groupe de formulaires imbriqués :
@Input() address: FormGroup;
Et dans votre modèle, utilisez [formGroup]
:
<div [formGroup]="address">
<input formControlName="street">
<input formControlName="zip">
</div>
Si vous ne voulez pas créer un groupe de formulaires imbriqués, vous n'avez pas besoin de le faire, vous pouvez simplement passer le formulaire parent à l'enfant, donc si votre formulaire ressemble à :
this.myForm = this.fb.group({
name: [''],
street: [''],
zip: ['']
})
vous pouvez passer les contrôles que vous voulez. En utilisant le même exemple que ci-dessus, nous voudrions seulement afficher street
et zip
le composant enfant reste le même, mais la balise enfant dans le modèle ressemblerait alors à ceci :
<address [address]="myForm"></address>
Voici un
Démo de la première option, voici la seconde Démo
Plus d'informations ici à propos des formulaires imbriqués basés sur des modèles.
0 votes
À quoi ressemble votre composant d'adresse ? Est-ce un ControlValueAccessor ?
0 votes
Juste un simple composant sans rien dans le corps de la classe
0 votes
Essayez d'ajouter ceci au bas du modèle : {{ form1.value | json }} Et voyez si cela contient les deux éléments d'entrée ou un seul. Je sais qu'un formulaire ne peut pas être divisé en composants chargés avec le routeur. Il est également possible qu'il ne puisse pas non plus "trouver" les éléments dans un composant imbriqué.
0 votes
@DeborahK Oui, vous avez raison, les éléments du composant adresse n'apparaissent pas dans le json. Existe-t-il un moyen d'y parvenir ?
1 votes
Bien que la réponse d'AJT82 soit excellente et très utile, il s'agit d'une solution avec une approche différente de celle demandée. Je propose une solution pour réaliser un formulaire sur plusieurs composants. ici : (plus bas).