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),我编辑了我的帖子。非常感谢你,你救了我一天!