我正在实现resolve
方法:
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Obj> | Obj {
return this.service.get(route.params['guid'])
.map((response: Json) => {
return this.service.list(response.data.id).map((response: Json) => {
return <Obj>response.data;
});
});
但是我有错误Can't convert to Observable<Observable<Obj>>
。
如何解决该问题?
答案 0 :(得分:1)
因为它是异步的,所以不能使它返回Obj
。因此,必须将其打开。您可以使用Observable<Obj>
将其设置为mergeMap
:
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Obj> {
return this.service.get(route.params['guid'])
.mergeMap((response: Json) => {
return this.service.list(response.data.id).map((response: Json) => {
return response.data;
});
答案 1 :(得分:0)
map
中的结果已经是可观察的。试试这个:
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Obj> | Obj {
return this.service.get(route.params['guid'])
.mergeMap((response: Json) => {
return this.service.list(response.data.id).map((response: Json) => {
return response.data;
});
});
编辑:@Rafael是正确的,您还必须使用mergeMap
(如果您使用的是rxjs版本<6,则必须使用SurfaceView
)。