Вам не хватает formArrayNames в ваших группах
<ng-container formArrayName="children">
<tr *ngFor="
let Y of travellerForm['controls’].children[
'controls'
];
let ix = index
" [formGroupName]="ix">
<td>Adult 1</td>
<td><input type="text" class="form-control" /></td>
<td><input type="text" class="form-control" /></td>
<td><input type="text" class="form-control" bsDatepicker #dp1="bsDatepicker" /></td>
</tr>
</ng-container>
Просто измените все это, и оно должно работать нормально. Я бы изменил * ngFor на
travellerForm.get('children').controls
, так как он намного чище.
Вам нужно будет внести эти изменения для каждого массива формы соответственно. Я сделал только для детей в качестве примера.
Когда вы используете formArrays для их правильной реализации, вам нужно помнить, как вы обращаетесь к обычным массивам с объектами
пример массива users = [{name: 'Jack', age: 20}, {name: 'Peter', age: 29}]
пользователи [0] для доступа к пользователю на позиции 0
formArrayName - это пользователи, formGroup - 0 (или i из * ngFor), следовательно:
<form [formGroup]="form">
<div formArrayName="users">
<div *ngFor="let user of form.get('users').controls; let i = index">
<div [formGroupName]="i">
/*user at position i*/
</div>
</div>
</div>
</form>