Angular 9 / Angular Материал - formArrayName в formArrayName - PullRequest
0 голосов
/ 04 мая 2020

Я использую Angular Материал в моем проекте, и у меня есть такая форма:

this.form = this.formBuilder.group({    
    addresses: this.formBuilder.array([]),
    contactPersons: this.formBuilder.array([])
});

адреса выглядят так:

let address = this.formBuilder.group({
  address: this.formBuilder.group({
    street: ['Street Number 1', [Validators.minLength(2)]],
    ...
  }),
  contactPersons: contactPersonsArray
});

Это означает, что у меня есть contactPersons в двух разных местах. Теперь мой вопрос: как получить доступ к contactPersons в адресе ?

Я пробовал это:

<div formArrayName="addresses">
    <div *ngFor="let address of addresses.controls; index as i" [formGroup]="address">
         <div formArrayName="address.contactPersons"> // address.contactPersons does not work
               Amount of contact persons {{address.contactPersons.length}}: 
         </div>
         <div formArrayName="contactPersons"> // I also tried this but here contactPersons from outer address is taken

[EDIT] Я решил свою проблему, решение для доступа к contactPersons по адресам:

form.controls.addresses.controls[i].controls.contactPersons.controls

Почему так сложно получить доступ к объектам / массивам с помощью Angular Material, для меня загадка - возможно, у меня есть обзор хуже.

...