J'ai donc un formulaire complexe pour créer une entité et je souhaite également l'utiliser pour l'édition. J'utilise une nouvelle API de formulaires angulaires. J'ai structuré le formulaire exactement comme les données que je récupère de la base de données, je veux donc définir la valeur de l'ensemble du formulaire sur les données récupérées.Voici un exemple de ce que je veux faire:
this.form = builder.group({
b : [ "", Validators.required ],
c : [ "", Validators.required ],
d : [ "" ],
e : [ [] ],
f : [ "" ]
});
this.form.value({b:"data",c:"data",d:"data",e:["data1","data2"],f:data});
PS: NgModel ne fonctionne pas avec les nouvelles API de formulaires et cela ne me dérange pas d'utiliser la liaison de données à sens unique dans le modèle comme dans
<input formControlName="d" value="[data.d]" />
cela fonctionne mais ce serait pénible en cas de tableaux
angular
angular2-forms
Amgad Serry
la source
la source
Réponses:
Pour définir toutes les valeurs FormGroup, utilisez setValue :
Pour définir uniquement certaines valeurs, utilisez patchValue :
Avec cette seconde technique, toutes les valeurs n'ont pas besoin d'être fournies et les champs dont les valeurs n'ont pas été définies ne seront pas affectés.
la source
Pour définir la valeur lorsque votre contrôle est FormGroup, vous pouvez utiliser cet exemple
la source
Oui, vous pouvez utiliser setValue pour définir la valeur à des fins d'édition / de mise à jour.
Vous pouvez consulter http://musttoknow.com/use-angular-reactive-form-addinsert-update-data-using-setvalue-setpatch/ pour comprendre comment utiliser les formulaires réactifs pour ajouter / modifier la fonction en utilisant setValue. Ça m'a sauvé du temps
la source
Vous pouvez utiliser form.get pour obtenir l'objet de contrôle spécifique et utiliser setValue
la source
Comme indiqué dans les commentaires, cette fonctionnalité n'était pas prise en charge au moment où cette question a été posée. Ce problème a été résolu dans angular 2 rc5
la source
J'ai implémenté une solution temporaire jusqu'à la mise à jour du formulaire de support angular2
usage:
Remarque: le formulaire et les données doivent avoir la même structure et j'ai utilisé lodash pour le deepcloning jQuery et d'autres bibliothèques peuvent également le faire
la source
Ce n'est pas vrai. Il vous suffit de l'utiliser correctement. Si vous utilisez les formes réactives, le NgModel doit être utilisé de concert avec la directive réactive. Voir l'exemple dans la source .
Bien que cela ressemble aux commentaires TODO , cela sera probablement supprimé et remplacé par une API réactive.
la source
FormControlName
ajoute explicitement en tant que fichier@Input()
. Voir la source à laquelle j'ai lié. Si ces sélecteurs de négation n'étaient pas là, alors avec l'exemple ci-dessus, un NgModel serait créé, ce que vous ne voulez pas.FormControlDirective
([formControl]
) etFormControlName
(formControlName
), voici comment cela fonctionne. Si lengModel
est utilisé sans l'un de ceux-ci, il est supposé que vous utiliserez des formulaires déclaratifs et unNgModel
est créé. Si lengModel
est utilisé avec l' une des directives de formulaire réactif , alors cette directive de formulaire réactif gérera le modèle, pas unNgModel