У меня есть форма массива, а именно «адрес», и она будет динамической, как только пользователь нажмет кнопку «Добавить адрес», сразу же добавится одна форма адреса. Я реализовал это с проблемой (Добавить / удалить адрес работает нормально). Теперь мне нужно добавить динамические контактные номера, похожие на адрес.
Адрес может содержать один или несколько телефонных номеров. Если пользователь нажимает «Добавить номер телефона», необходимо добавить новую форму телефонного номера внутри адресной формы, функциональные возможности потребуются во всех адресных формах. (т.е. массив массива => массив адресов, и каждый адрес содержит массив контактов)
Рабочий код доступен в 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');
}
}
Пожалуйста, помогите мне, как реализовать формы динамического вложенного массива (добавить / удалить формы).
FormArray
и нажать группу контактов. Аналогично тому, как вы это делали для адреса. - person Sachin Gupta   schedule 22.03.2019