FormArray.Не удается найти управление с помощью пути - PullRequest
0 голосов
/ 25 октября 2018

Я хочу вывести форму, в которой одно поле является массивом, и для каждого элемента массива мне нужно вывести свои входные данные.

Компонент:

ngOnInit() {
  const fb = this.fb;
  this.editForm = this.fb.group({
    country: fb.control(null),
    identifiers: this.fb.array([
       this.fb.group({
         codeIdentifier: fb.control(null),
         numIdentifier: fb.control(null),
       })
    ]),
 });
 this.organizationService.getOneById(this.id).subscribe((organization: Organization) => {
    let ids: any[] = [];
    organization.identifiers.forEach(item => {
       let id: any = { "codeIdentifier": "", "numIdentifier": "" };
       id.codeIdentifier = item.typeIdentifier.code;
       id.numIdentifier = item.numIdentifier;
       ids.push(id);
    });
     this.editForm.setControl('identifiers', this.fb.array(ids || []));
 })
}

HTML:

<div [formGroup]="editForm">
  <ng-container formArrayName="identifiers">
    <ng-container *ngFor="let identifier of identifiers.controls; let i=index" [formGroupName]="i">
      <input type="text" formControlName="codeIdentifier">
      <input type="text" formControlName="numIdentifier">
    </ng-container>
  </ng-container>
</div>

Ошибка:

Не удается найти элемент управления с путем: 'идентификаторы -> 0 -> codeIdentifier'

1 Ответ

0 голосов
/ 25 октября 2018

идентификаторов - это ничто в вашем коде (в общем, имя свойства formArray)

Вы можете выбрать

1.-поставить геттер в свой .ts

get identifiers()
{
    return this.editForm.get('identifiers") as FormArray
}

2. - измени свой .html

<ng-container *ngFor="let identifier of editForm.get('identifiers").controls;
           let i=index" [formGroupName]="i">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...