Angular 角度5转换可观测<;obj>;到obj

Angular 角度5转换可观测<;obj>;到obj,angular,angular5,observable,Angular,Angular5,Observable,我正在实施resolve方法: resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Obj> | Obj { return this.service.get(route.params['guid']) .map((response: Json) => { return this.service.list

我正在实施
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;
                });
        });
resolve(路由:ActivatedRouteSnapshot,状态:RouterStateSnashot):可观察的对象{
返回此.service.get(route.params['guid'])
.map((响应:Json)=>{
返回此.service.list(response.data.id).map((response:Json)=>{
返回响应数据;
});
});
但我有错误
无法转换为可观察的


如何解决该问题?

您不能将此返回设置为
Obj
,因为它是异步的。因此,必须将其展开。您可以使用
合并映射将其设置为可观察的

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;
                });
解析(路由:ActivatedRouteSnapshot,状态:RouterStateSnashot):可观察{ 返回此.service.get(route.params['guid']) .mergeMap((响应:Json)=>{ 返回此.service.list(response.data.id).map((response:Json)=>{ 返回响应数据; });
地图中的结果已经是可见的。请尝试以下操作:

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;
                });
        });
resolve(路由:ActivatedRouteSnapshot,状态:RouterStateSnashot):可观察的对象{
返回此.service.get(route.params['guid'])
.mergeMap((响应:Json)=>{
返回此.service.list(response.data.id).map((response:Json)=>{
返回响应数据;
});
});

编辑:@Rafael是对的,你还必须使用
mergeMap
(如果你使用的是rxjs版本<6),我编辑了我的帖子。

非常感谢你,你救了我一天!