我正在将HttpClient用于来自Web服务的get
数据。我想订阅结果数据并将其从JSON转换为实际的类,然后从该方法返回这些类的Observable
。基本上当调用者的subscribe
触发时,我希望它能够获得类。
我对角度和可观察性很新,所以我不确定如何进行链接。所以我想要这样的东西:
constructor(private http: HttpClient) {}
getExistingArsByLab(labId: number) : Observable<EhsAssessmentAr[]> {
return this.http.get("...")
.subscribe(json => json.map(obj => {
let ar = new EhsAssessmentAr();
ar.id = obj['id'];
...
return ar;
}));
}
当然实际上并没有编译,然后调用者会这样做:
this.getExistingArsByLab(12).subscribe(ars => { ... });
此时我将ars
作为实际的EhsAssessmentAr[]
。
答案 0 :(得分:2)
结合@Antoniosss答案,我认为这应该可以解决您的问题:
getExistingArsByLab(labId: number) : Observable<EhsAssessmentAr[]> {
return this.http.get("...")
.pipe(map(obj => {
return obj.map(element => {
let ar = new EhsAssessmentAr();
ar.id = element['id'];
...
return ar;
});
}));
}
请注意map
中的Observable
与Array.map()
答案 1 :(得分:-1)
不要立即订阅pipe
和map
getExistingArsByLab(labId: number) : Observable<EhsAssessmentAr[]> {
return this.http.get("...")
.pipe(map(obj => {
let ar = new EhsAssessmentAr();
ar.id = obj['id'];
...
return ar;
}));
}
您必须修复括号并添加正确的映射。