3

insert() を使用して formArray の特定の値を更新しようとしています。次のように ngOninit() でフォームを初期化します。

this.myForm = this.fb.group({
    exercises: this.fb.array([]),
    type: new FormControl(),
    day: new FormControl(),
    sets: this.fb.array([]),
    reps: this.fb.array([]),
});

変更時に以下の関数を呼び出す入力がありますが、配列のインデックスで新しい値を挿入しようとすると、値がプッシュされます。

onSetsChange(sets, index){
  var setsFormArray = <FormArray>this.myForm.controls.sets;
  setsFormArray.insert(index, new FormControl(sets));
}

html コードは以下のとおりです。

<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>

私が渡すExerciseIndexは、表示されないループからのものです。

私が間違っていることと、更新されていない値は何ですか? ありがとうございました

4

2 に答える 2