Angular 订阅 observable 然后 return 一个新的
Angular subscribe to observable then return a new one
我正在使用 HttpClient get
来自网络服务的数据。我想订阅生成的数据并将其从 JSON 转换为实际的 类,然后从该方法返回 类 中的 Observable
。基本上当调用者的 subscribe
触发时,我希望它得到 类.
我对 angular 和可观察对象还很陌生,所以我不确定如何进行链接。所以我想要这样的东西:
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[]
。
不要马上订阅,但是 pipe
和 map
getExistingArsByLab(labId: number) : Observable<EhsAssessmentAr[]> {
return this.http.get("...")
.pipe(map(obj => {
let ar = new EhsAssessmentAr();
ar.id = obj['id'];
...
return ar;
}));
}
您必须修复括号并添加正确的映射。
结合@Antonioss的回答,我想这应该可以解决你的问题:
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;
});
}));
}
请注意 Observable
中的 map
不同于 Array.map()
我正在使用 HttpClient get
来自网络服务的数据。我想订阅生成的数据并将其从 JSON 转换为实际的 类,然后从该方法返回 类 中的 Observable
。基本上当调用者的 subscribe
触发时,我希望它得到 类.
我对 angular 和可观察对象还很陌生,所以我不确定如何进行链接。所以我想要这样的东西:
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[]
。
不要马上订阅,但是 pipe
和 map
getExistingArsByLab(labId: number) : Observable<EhsAssessmentAr[]> {
return this.http.get("...")
.pipe(map(obj => {
let ar = new EhsAssessmentAr();
ar.id = obj['id'];
...
return ar;
}));
}
您必须修复括号并添加正确的映射。
结合@Antonioss的回答,我想这应该可以解决你的问题:
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;
});
}));
}
请注意 Observable
中的 map
不同于 Array.map()