Как ссылаться на отдельные элементы управления FormArray - PullRequest
0 голосов
/ 28 февраля 2020

Я застрял на том, что мне нужно использовать в качестве formControlName для моих массивов в моей реактивной форме, я хочу, чтобы массив был [1,2,3], но я хочу иметь возможность добавлять и удалять из массива но у меня также есть несколько массивов, я могу заставить их работать, если я создаю новые массивы и устанавливаю массивы извне формы, но я не чувствую, что это будет очень масштабно, если я создаю большую форму, спасибо за помощь

Мне надоело делать formControlName = "{{j}}", и я все еще получаю пустое значение, когда консоль записывает в журнал массив

this.multiplerForm = this.fb.group({
  multipliers: this.fb.array([
    this.fb.group({
      reps: this.fb.array([]),
    })
  ])
});

addReps(control){
    control.push((this.fb.control('')));
}

removeReps(control,index: number) {
    control.removeAt(index);
}
<StackLayout formArrayName="reps">
    <GridLayout rows="*" columns="*,*,*" *ngFor="let rep of multiplier.get('reps').controls;  let j=index" [formGroupName]="j"  >
        <Label col="0" text="Set {{j+1}}" ></Label>
        <TextField col="1" formControlName="{{j}}" ></TextField>
        <Button col="2" text="X" (tap)="removeReps(multiplier.controls.reps,j)"></Button>
    </GridLayout>
</StackLayout>

1 Ответ

1 голос
/ 28 февраля 2020

Darian FormArray может быть FormArray FormGroups или FormArrays FormControls. У вас есть Formarray FormControls, поэтому вы используете [formControlName] = "i", NOT [formGroupName] = "i"

<div *ngFor="let rep of multiplier.get('reps').controls; let i=index">
    <label>
      Alias:
      <input type="text" [formControlName]="i">
    </label>
  </div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...