Я пытался отобразить HTTP-ответ (из моего REST API, который возвращает JSON) в пользовательскую модель, которую я сделал в своем проекте Angular. Сначала я вызываю эту функцию, чтобы получить результаты от моего оставшегося API, приведя его к DHEntity (это моя модель)
getProjectData(idDH): Observable<DHEntity>{
return this.http.get<DHEntity>(`${environment.apiUrl}/dh/${idDH}`, {observe: 'response'})
.pipe(map(data => data.body));
}
json, которое я получаю из вызова (поэтому тело моего ответа) верно. Затем я вызываю другой метод для обработки информации
getData(): void {
const idDH = +this.route.snapshot.paramMap.get('idDH');
if (idDH){
this.dh1Service.getProjectData(idDH).pipe( map(
res => {this.DHlist = res}
));
}
Я также попытался, как и предлагалось, напрямую подписаться, поскольку модель идентична моим результатам в конечной точке
getData(): void {
const idDH = +this.route.snapshot.paramMap.get('idDH');
if (idDH){
this.dh1Service.getProjectData(idDH).subscribe(
res => {this.DHlist = res});
}
Кроме того к этим двум я также попробовал несколько других способов (включая использование оператора «new» с определенным конструктором), пытаясь вернуть правильную сущность: ни один из них не работает. Каждый раз, когда я получаю неопределенное значение, независимо от того, что я делаю. Похоже, Angular не может привести к указанному типу c. Моя модель состоит из нескольких классов следующим образом (для краткости я опускаю конструкторы):
export class DHEntity{
idDH: number;
dhinfo: DHInfo;
dhdata: DHData[];
}
export class DHInfo {
name: string;
targetYear: number;
description: string;
decisions: DHDecisionDefinition[];
}
export class DHData {
dec1: number;
dec2: number;
eval: number;
}
export class DHDecisionDefinition {
id: number;
description: string;
targetY1: string;
targetY2: string;
targetY3: string;
comments: string;
}
Есть ли причина, по которой я не могу правильно отобразить значения? Что я делаю неправильно? Вот один пример JSON, который я получаю из моей конечной точки: Ссылка