如何使用通数据从一个解析器其它
问题描述:
我有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 ...
}