【发布时间】:2026-01-21 10:35:01
【问题描述】:
我有一个带有解析器的延迟加载路由:
const routes: Routes = [
{
path: '',
children: [
{
path: '',
component: MyComponent,
resolve: {
data: MyService
}
}
]
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class MyRoutingModule {}
我的模块
@NgModule({
imports: [
CommonModule,
MyRoutingModule,
...
],
declarations: [
MyComponent,
...
],
providers: [MyService]
})
export class MyModule {}
我的服务resolver:
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {
return forkJoin(
this.getData1(),
this.getData2(),
this.getData3()
);
}
我正在订阅我的应用组件上的属性data:
export class AppComponent implements OnInit {
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.route.data.subscribe(x => {
data = x; //x = undefined
});
}
}
问题是x 总是undefined
任何想法为什么我无法访问已解析的数据以及如何解决这个问题?
更新: 我想知道数据何时解析,所以我想隐藏微调器。 根据@OneLunch-Man 的帖子,我的应用程序组件将无法访问该数据,那么您将如何解决这个问题,我需要在我的应用程序组件上知道的只是数据何时被解析,以便我可以做一些 UI 状态隐藏微调器等更改
【问题讨论】:
-
问:你到底想要完成什么?
-
@paulsm4 我不知道数据何时解析,所以我想隐藏微调器。
-
问:你能利用 Angular 生命周期事件来完成这个吗?