Angular 如何使用将数据从一个解析器传递到另一个解析器
我有两个角分解器一个接一个地工作。第一Angular 如何使用将数据从一个解析器传递到另一个解析器,angular,angular-routing,resolver,Angular,Angular Routing,Resolver,我有两个角分解器一个接一个地工作。第一 @Injectable() export class ChainViewResolver implements Resolve<any> { constructor(private a: AService) { } resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> { re
@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()
导出类ChainViewResolver实现解析{
构造函数(专用a:AService){
}
解析(路由:ActivatedRouteSnapshot,状态:RouterStateSnashot):可观察{
返回这个.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 => {
});
});
}
}
@Injectable()
导出类DocViewResolver实现解析{
构造函数(专用a:AService){
}
解析(路由:ActivatedRouteSnapshot,状态:RouterStateSnashot):可观察{
返回此.a.getSome(state.url.split('/')[state.url.split('/')).indexOf('id')+1]).flatMap((chain)=>{
返回此.a.getSomeAnotherData(route.params['id2']).flatMap(结果=>{
});
});
}
}
url看起来像:
/父组件/:id/子组件/:id
其中,第一个解析器用于父\u组件,第二个解析器用于子\u组件
1) 方法getSome这是一个繁重的请求,当我的解析器一起工作时,我不想使用它两次
2) 我不想将其写入某个变量或本地存储,因为返回的数据经常更改,并且当我使用第一个解析器而不是第二个解析器时,可能会因此出现问题
如何将数据从第一个冲突解决程序传递到第二个冲突解决程序?因此,我使用名为TmpService的服务将数据从一个冲突解决程序传递到另一个冲突解决程序,这是可行的,但我不喜欢这个决定。如果您对第一个父路由有如下声明:
resolve: {
parentValue: ChainViewResolver
}
您可以在子DocViewResolver中获得它,如:
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {
let parentValue = route.parent.data.parentValue; // <-- here
return ...
}
解析(路由:ActivatedRouteSnapshot,状态:RouterStateSnashot):可观察{
让parentValue=route.parent.data.parentValue//