Для динамического добавления formElemnt в реактивную форму сначала необходимо создать элемент формы или группу форм и вставить его в исходный формат для этого поля.
EX: у меня есть customerForm, как показано ниже
this.customerForm = this.fb.group({
firstName: ['', [Validators.required, Validators.minLength(3)]],
lastName: ['', [Validators.required, Validators.maxLength(50)]],
emailGroup: this.fb.group({
email: ['', [Validators.required, Validators.email]],
confirmEmail: ['', Validators.required],
}, { validator: emailMatcher }),
phone: ''
addresses: this.fb.array([this.createAddress()])
});
При нажатии кнопки Добавить адрес в представлении я могу вызвать функцию в компоненте, которая будет выдвигать новый адрес в массив адресов в форме.
addAddress(): void {
this.addresses.push(this.createAddress());
}
createAddress(): FormGroup {
return this.fb.group({
street1: ['', Validators.required],
street2: '',
city: '',
state: '',
zip: ''
});
}
По вашему мнению, вы можете перебирать этот массив адресов и отображать адреса. Первоначально он не будет отображаться, так как значение массива будет пустым! Надеюсь, это поможет.