Я добавляю группу форм динамически в форму с помощью FormArray. Пока я нажимаю только что созданную группу форм и отображаю ее в шаблоне, angular не может найти путь к этому элементу управления.
Я ссылался на угловой документ при добавлении динамических элементов управления с массивом форм.
https://angular.io/guide/reactive-forms#dynamic-controls-using-form-arrays
а также аналогичная проблема при переполнении стека: Angular: не удается найти элемент управления с путем: 'variable-> 0 -> id'
класс компонентов:
get alternateAddress() {
return this.signupForm.get('alternateAddress') as FormArray;
}
buildAddress() {
return this.fb.group({
city: [''],
street: ['']
});
}
addAlternateAddress() {
this.alternateAddress.push( this.buildAddress());
}
ngOnInit() {
this.signupForm = this.fb.group({
name: ['', [Validators.required]],
password: ['', [Validators.required]],
confirmPassword: ['', [Validators.required]],
email: ['', [Validators.email]],
subscribe: [''],
phone: ['', [Validators.required, Validators.pattern]],
topic: ['', [Validators.required]],
address: this.fb.group({
city: [''],
street: ['']
}),
alternateAddress: this.fb.array([ ])
}, {validator: PasswordMatchValidator});
Шаблон компонента
<button type="button" class="btn btn-sm btn-warning" (click)="addAlternateAddress()">Add alternate address</button>
<div *ngIf="alternateAddress.length > 0">
<div class="form-group" formArrayName="alternateAddress" *ngFor="let addr of alternateAddress.controls; let i=index">
<div [formGroupName]="alternateAddress.controls[i]">
<div class="form-group">
<label for="city">City</label>
<input type="text" class="form-control" name="city" [formControlName]="city">
</div>
<div class="form-group">
<label for="name">Street</label>
<input type="text" class="form-control" name="street" [formControlName]="street">
</div>
</div>
</div>
</div>
Я не совсем уверен, как обеспечить путь к группе форм и ссылаться на ее отдельные элементы управления, поскольку в документации демонстрируется только часть элементов управления.
Спасибо сообществу за усилия по отладке.