Typescript - это красивый слой абстракции поверх javascript, сохраняющий всю силу javascript, например, функциональную парадигму, но охватывающий его недостатки, например, являющийся языком со статической типизацией.
То, что вам нужно, это не группамассивов, но наоборот. Проверьте метод initFormArray:
import {Component, OnInit} from "@angular/core";
import {FormArray, FormBuilder, FormControl, FormGroup} from "@angular/forms";
@Component({
selector: "app-root",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.scss"]
})
export class AppComponent implements OnInit {
title = "testAngular";
formArray: FormArray;
inputArray: Student[];
constructor(
private fb: FormBuilder,
) {}
ngOnInit(): void {
this.inputArray = [
{
type: "student",
name: {
first: "Nick",
last: "Peru"
},
skills: [
{
title: "programming",
desc: "Whatever"
},
{
title: "design",
desc: "Whatever"
}
]
}
];
}
initFormArry() {
this.formArray = this.fb.array(
this.inputArray.map((student) => this.fb.group({
type: new FormControl(student.type),
name: new FormGroup({
first: new FormControl(student.name.first),
last: new FormControl(student.name.last),
}),
skills: this.fb.array(student.skills.map((skill) => this.fb.group({
title: new FormControl(skill.title),
desc: new FormControl(skill.desc)
})))
}))
);
}
}
interface Student {
type: string;
name: {
first: string;
last: string;
};
skills:
{
title: string;
desc: string;
}[]
;
}