Как получить данные из формы в Angular - PullRequest
0 голосов
/ 24 июня 2019

Я хочу получить данные из формы. Данные, которые я получаю, не верны. В чем моя проблема?

public editForm: FormGroup = new FormGroup({
    'id' : new FormControl(''),
    'name': new FormControl('', Validators.required),
    'code': new FormControl('', Validators.required),
    'active': new FormControl(),
    'sequence' : new FormControl(null),
    'entryTypes': new FormArray([new FormControl(), new FormControl()])
});
<div class="form-group">
    <label>
        <input type="checkbox" formArrayName="entryTypes" [checked]="locationEntryTypeDTOs[0].enabled"/>
        {{locationEntryTypeDTOs[0].entryTypeCode}}
     </label>
</div>

<div class="form-group">
    <label>
        <input type="checkbox" formArrayName="entryTypes" [checked]="locationEntryTypeDTOs[1].enabled"/>
        {{locationEntryTypeDTOs[1].entryTypeCode}}
    </label>
</div>

Ответы [ 2 ]

1 голос
/ 24 июня 2019
<form [formGroup]="editForm">
  <div formArrayName="entryTypes">
      <input  [formControlName]="0">
      <input  [formControlName]="1">
  </div>
</form>

Или, если вы хотите, итерация

<form [formGroup]="editForm">
  <div formArrayName="entryTypes">
      <input *ngFor="let control of editForm.get('entryTypes').controls;
           let i=index" [formControlName]="i">
  </div>
</form>

Другая форма

<form [formGroup]="editForm">
  <div formArrayName="entryTypes">
      <input *ngFor="let control of editForm.get('entryTypes').controls;
           let i=index" [formControl]="control">
  </div>
</form>
1 голос
/ 24 июня 2019

Определите массив entryTypes следующим образом.

<div class="form-group" formArrayName="entryTypes">
    <div *ngFor="let entryType of editForm.controls.entryTypes.controls; index as i">
        <label>
          <input type="checkbox" formControlName="{{i}}" />
          {{locationEntryTypeDTOs[i].entryTypeCode}}
        </label>
    </div>
</div>

И обновите свой элемент формы entryTypes следующим образом.И вам нужно создать отдельную функцию для запуска 'entryTypes', если в locationEntryTypeDTOs хранится больше флажков и значений.

'entryTypes': new FormArray([new FormControl(locationEntryTypeDTOs[0].enabled), new FormControl(locationEntryTypeDTOs[1].enabled)])
...