Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rxjs Angular7:如果模型与JSON不同,如何在订阅Observable时正确映射数据_Rxjs_Spring Data_Observable_Angular7_Angular Httpclient - Fatal编程技术网

Rxjs Angular7:如果模型与JSON不同,如何在订阅Observable时正确映射数据

Rxjs Angular7:如果模型与JSON不同,如何在订阅Observable时正确映射数据,rxjs,spring-data,observable,angular7,angular-httpclient,Rxjs,Spring Data,Observable,Angular7,Angular Httpclient,我正在向RESTAPI发出GET请求。我的类模型与请求的JSON有点不同,而且我似乎无法获取任何数据:当我登录到控制台时,我的模型对象是未定义的。订阅observable时如何正确映射值 我的模型: export class Signalement { idsignalement: number; destinataire_id: number; idstatut: number; iddomaine: number; idlocalisation: number; idtype: numbe

我正在向RESTAPI发出GET请求。我的类模型与请求的JSON有点不同,而且我似乎无法获取任何数据:当我登录到控制台时,我的模型对象是未定义的。订阅observable时如何正确映射值

我的模型:

export class Signalement {

idsignalement: number;
destinataire_id: number;
idstatut: number;
iddomaine: number;
idlocalisation: number;
idtype: number;
idemetteur: number;
x: number;
y: number;
nom: string;
description: string;
descriptionlieu: string;
la_date: string;
}
我的JSON:

{
    "_embedded": {
        "signalements": [
            {
                "idsignalement": 1,
                "iddomaine": 1,
                "idlocalisation": 1,
                "idtype": 1,
                "idemetteur": 1,
                "idstatut": 1,
                "x": 1,
                "y": 1,
                "nom": "Postman Signalement",
                "description": "Envoie depuis postman",
                "descriptionlieu": "Sur la VM",
                "la_date": "2019-02-08T09:25:36.968+0000",
                "_links": {
                    "self": {
                        "href": "***/signalements/1"
                    },
                    "signalement": {
                        "href": "***/signalements/1"
                    },
                    "destinataire": {
                        "href": "**/signalements/1/destinataire"
                    }
                }
            }
        ]
    },
    "_links": {
        "self": {
            "href": "***:8080/signalements{?page,size,sort}",
            "templated": true
        },
        "profile": {
            "href": "http://***/profile/signalements"
        }
    },
    "page": {
        "size": 20,
        "totalElements": 1,
        "totalPages": 1,
        "number": 0
    }
}
我的组成部分:

export class SignalementsComponent implements OnInit {

signalements: Signalement[];

constructor(private signalementService: SignalementService, private messageService: MessageService) { }

ngOnInit() {
    this.getSignalements();
}

getSignalements(): void {
    this.signalementService.getSignalements().subscribe((data) => {
        this.signalements = data;
    });
}
我的服务:

export class SignalementService {

constructor(private http: HttpClient) { }

getSignalements(): Observable<Signalement[]> {
    return this.http.get<Signalement[]>(href); 
    }
}
您不能返回this.http.gethref;因为您接收的数据不是信号对象

请记住,javascript不是类型化的,因此您在Typescript中输入的类型指示只是编码的帮助,而不是实际执行的规则

根据答案的模式,您应该首先深入到嵌入字段中。所以你应该:

return this.http.get<Signalement[]>.pipe(map(data => data['_embedded']['signalments']));
您还应该添加检查,以验证字段是否确实存在,以及是否采用了正确的格式,从而根据潜在的数据源等避免安全问题