У меня есть группа форм Angular (использующая последнюю версию Angular 7) с вложенными группами форм:
this.form = this._formBuilder.group({
person: this._formBuilder.group({
name: [''. Validators.required],
firstName: [''. Validators.required],
birthDate: [new Date()]
}),
request: this._formBuilder.group({
title: [''. Validators.required],
startDate: [new Date()],
endDate: [new Date()],
}),
});
Это необходимо сопоставить с моделью API POST, имеющей другую структуру:
interface ApiData {
personName: string;
personFirstName: string;
personBirthDate: Date;
requestTitle: string;
requestStartDate: Date;
requestEndDate: Date;
}
В настоящее время у меня есть метод _patchForm, который вызывается при инициализации, если форма используется в качестве формы редактирования (если идентификатор находится в маршруте) для преобразования данных API в модель формы: при отправке формы я преобразуюМодель формы для данных API.
let entity: ApiData = {};
entity.personName = this.form.get('person').get('name').value;
entity.personFirstName = this.form.get('person').get('firstName').value;
...
this._http.post(apiUrl, entity).subscribe( ... )
В C # я использую Automapper для этого, но так как automapper-ts не написан для Angular, я не уверен, что это будет работать с моделью FormGroup.
Возможно ли это или есть другой, более угловой способ решить эту проблему?Я делаю этот тип преобразования в формах по всему моему приложению.