Я создаю управляемую моделью динамическую форму со следующей структурой:
export class AppComponent {
data = {
companies: [
{
company: "example comany",
projects: [
{
projectName: "example project",
}
]
}
]
}
myForm: FormGroup;
constructor(private fb: FormBuilder) {
this.myForm = this.fb.group({
companies: this.fb.array([])
})
this.setCompanies();
}
setCompanies() {
let control = <FormArray>this.myForm.controls.companies;
this.data.companies.forEach(x => {
control.push(this.fb.group({
company: x.company,
projects: this.setProjects(x) }))
})
}
setProjects(x) {
let arr = new FormArray([])
x.projects.forEach(y => {
arr.push(this.fb.group({
projectName: y.projectName
}))
})
return arr;
}
}
Ниже приведена структура модели, в наблюдаемой которой я получаю данные от серверной части:
export class Companies{
company : String;
companyRegNo : String;
projects : Project[];
}
export class Project{
projectName : String;
projectRegNo : String;
}
У меня есть некоторые данные json в моей переменной 'myForm' FormGroup
, с информацией, содержащей company и projectName.Мне нужно внести некоторые изменения в этот json, но при этом иметь при себе оригинальные данные myForm
json.
Следовательно, я создаю еще одну FormGroup
переменную myForm2
и присваиваю ей значение myForm
:
myForm2: FormGroup;
this.myForm2 = this.myForm;
Теперь я хочу, чтобы значение company
было заменено значением companyRegNo
, а значение projectName
было заменено значением projectRegNo
, сохраняя ключи company
и projectName
остаться как есть, в myForm2.
У меня уже есть 2 метода, getProjectRegNoFromProjectName()
и getCompanyRegNoFromCompanyName()
, доступные со мной, которые возвращают projectRegNo
и companyRegNo
при прохождении projectName
и company
соответственно.Мне нужно вызвать оба этих метода во время итерации myForm2.Как теперь можно выполнить итерацию самих данных myForm2
, чтобы я мог обновить назначенные атрибуты и значения FormArray
, как указано выше?