@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 => {
});
});
}
}
url看起来像:
/ parent_component /:ID / children_component /:ID
其中,parent_component的第一个解析器和children_component的第二个解析器
1)方法 getSome 它的重要请求,当我的解析器一起工作时,我不想使用它2次。
2)我不想将它写入某个变量或本地存储,因为 getSome 返回的数据经常会发生变化,当我第二次使用第一个解析器时,我可能会遇到此问题
如何将我的数据从第一个解析器传递到第二个?
答案 0 :(得分:3)
如果您有第一个父路线的声明,如:
resolve: {
parentValue: ChainViewResolver
}
你可以在子DocViewResolver中得到它,如:
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {
let parentValue = route.parent.data.parentValue; // <-- here
return ...
}
答案 1 :(得分:0)
结果我使用名为TmpService的服务将数据从一个解析器传递给另一个解析器,它可以工作,但我不喜欢这个决定。