Обычно вы меняете свою функцию addAnotherForm, чтобы разрешить передачу данных
addanotherForm(data:any): FormGroup{
return this.formbuilder.group({
screenname: [data],
});
}
В вашем случае вы должны изменить функцию addanother
addanother(data:any):void {
(<FormArray>this.personalForm.get('other')).push(this.addanotherForm(data));
}
Итак, ваш ngOnInit может быть как.
//at first an Empty FormArray
this.personalForm = this.formbuilder.group({
other: this.formbuilder.array([])
});
// Api call
this.pagesService.GetScreens('').then(res => {
console.log('get screens api', res);
for (let i = 0; i < res['data']['length']; i++) {
this.arrayItems = res['data'][i]['name']
this.addanother(res['data'][i]['name'] //fill the array
}
}).catch(error => {
this.utilService.showError('Something went wrong', 'Error');
console.log('err is', error);
});
Ну, на самом деле вы можете просто весь код - и действительно вам это не нужно. ArrayItems - и мы используем карту
this.pagesService.GetScreens('').then(res => {
this.personalForm=new FormGroup({
other:new FormArray(
res['data'].map(d>=>{
return new FormGroup({
screenname:new FormControl(d.name))
})
})
)
})
}).catch(error => {
this.utilService.showError('Something went wrong', 'Error');
console.log('err is', error);
});
ПРИМЕЧАНИЕ. Вам не нужно создавать ForGroup, если вы хотите, чтобы вы только управляли FormArray, а ваш FormArray может быть только formArray из formControls, а не FormArray из FormGroup