Я использую 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, для меня загадка - возможно, у меня есть обзор хуже.