У меня есть форма массива, а именно «адрес», и она будет динамической, когда пользователь нажмет кнопку «Добавить адрес» сразу, как только одна форма адреса будет добавлена.Я реализовал это с проблемой (Add / Remove address работает нормально).Теперь мне нужно добавить динамические контактные номера, похожие на адреса.
Адрес может содержать один или несколько телефонных номеров, если пользователь нажимает «Добавить номер телефона», необходимо добавить форму нового номера телефона внутриФорма адреса, функциональность будет необходима во всех формах адреса. (т. Е. Массив array => массив адресов и каждый адрес содержит массив контактов)
Рабочий код доступен в StackBlitz: https://stackblitz.com/edit/angular-maexn8
Пример кода:
import { Injectable } from '@angular/core';
import { FormBuilder, FormGroup, FormArray, Validators } from '@angular/forms';
import { User } from '../../model/user';
@Injectable()
export class UpsertUserFormService {
public userForm: FormGroup;
constructor(private _fb: FormBuilder) {
this.userForm = this._fb.group({
relation: [],
title: [],
firstName: [],
lastName: [],
address: this._fb.array([this.addAddressGroup()])
});
}
private addAddressGroup(): FormGroup {
return this._fb.group({
street: [],
city: [],
state: [],
pincode: [],
isPrimary: [],
contacts: this._fb.array([this.contactsGroup()])
});
}
showMessage(obj: any) {
console.log('Console Item: ',obj)
}
private contactsGroup(): FormGroup {
return this._fb.group({
phoneNumber: ['9712345678', [Validators.maxLength(10)]],
});
}
addAddress(): void {
this.addressArray.push(this.addAddressGroup());
console.log(this.addressArray);
}
removeAddress(index: number): void {
this.addressArray.removeAt(index);
}
get addressArray(): FormArray {
return <FormArray>this.userForm.get('address');
}
}
Пожалуйста, помогите мне, как реализовать динамические формы вложенных массивов (Добавить / Удалить формы).