J'essaye de mettre à jour une valeur spécifique sur un formArray en utilisant insert(). j'initialiser formulaire ngOninit() comme ceci:Angular FormArray Insert
this.myForm = this.fb.group({
exercises: this.fb.array([]),
type: new FormControl(),
day: new FormControl(),
sets: this.fb.array([]),
reps: this.fb.array([]),
});
J'ai une entrée où le changement que j'appelle la fonction ci-dessous mais lorsque je tente d'insérer une nouvelle valeur avec l'index du tableau que je reçois la valeur poussé.
onSetsChange(sets, index){
var setsFormArray = <FormArray>this.myForm.controls.sets;
setsFormArray.insert(index, new FormControl(sets));
}
Le code HTML est ci-dessous:
<div class="col-md-3">
<select class="form-control input-sm" (change)="onSetsChange($event.target.value, exerciseIndex)">
<option *ngFor="let set of sets; let i = index;">{{set}}</option>
</select>
</div>
Le exerciseIndex Je passe est d'une boucle qui ne se présente pas.
Qu'est-ce que je fais mal et la valeur qu'elle ne met pas à jour? Merci
Pourquoi n'utilisez-vous pas simplement la liaison de données bidirectionnelle via '[(ngModel)]' pour travailler avec des valeurs? –
@CommercialSuicide parce que les FormControls sont beaucoup plus puissants et clairs? – smnbbrv
@oMpamparos votre problème n'est pas clair. Pourquoi utilisez-vous l'index d'un tableau pour insérer les valeurs ** du même index ** dans un autre tableau? Vous devriez probablement transférer votre 'FormArray' dans' FormGroup' si vous voulez garder les valeurs par le même index. – smnbbrv