如何使用通数据从一个解析器其它

问题描述:

我有2组角的解析器工作一个接一个。 1如何使用通数据从一个解析器其它

@Injectable() 
export class ChainViewResolver implements Resolve<any> { 

    constructor(private a: AService) { 
    } 

    resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> { 
     return this.a.getSome(route.params['id']); 
    } 
} 

和第二,

@Injectable() 
export class DocViewResolver implements Resolve<any> { 

    constructor(private a: AService) { 
    } 

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> { 

    return this.a.getSome(state.url.split('/')[state.url.split('/').indexOf('id') + 1]).flatMap((chain) => { 
     return this.a.getSomeAnotherData(route.params['id2']).flatMap(result => { 

     }); 
    }); 
} 
} 

网址看起来像:

/parent_component /:ID/children_component /:ID

,其中第一个解析器为parent_component,并为第二解析器children_component

1)方法getSome它的重型请求,我不想使用它的2倍,当我的解析器一起工作。

2)我不想把它写一些变量或本地存储,因为getSome返回的数据经常变化,当我用1号变压器内部消除第二,我可能会因为这个

问题如何能我把我的数据从第一个解析器传给第二个?

至于结果,我使用服务命名TmpService从一个解析器将数据传递给其他的,它的工作,但我穿上吨这样的这一决定。

如果你有像第1父路由声明:

resolve: { 
    parentValue: ChainViewResolver 
} 

你可能会得到它的孩子DocViewResolver,如:

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> { 

    let parentValue = route.parent.data.parentValue; // <-- here 

    return ... 
}