【发布时间】:2019-07-21 20:22:06
【问题描述】:
我有一个小网络应用程序,它基本上列出了一个播放器列表,当用户点击播放器名称时,它会显示播放器详细信息。它使用两个 api 调用,一个用于列表,另一个用于加载所选播放器的详细信息。我的问题是,当我从详细信息路由返回主路由时,组件再次执行 ngOnInit,因此它再次进行第一次 api 调用以再次加载主列表,我不想再次调用此调用。这是我的配置:
routing.module.ts
...
export const routes: Routes = [
{
path: '',
component: BioStatsComponent,
resolve: {
biostats: BiostatsResolverService
}
},
{
path: 'info',
children: [
{
path: ':id',
component: InfoComponent,
resolve: {
info: PlayersResolverService
}
}
]
}
];
...
detail.component.ts
ngOnInit(){
...
this.playersinfo = this.route.snapshot.data['info'];
...
}
home.component.ts
ngOnInit(){
...
this.biostats$ = this.route.snapshot.data['biostats'];
...
}
detail-resolver.service.ts
...
resolve(route: ActivatedRouteSnapshot, rstate: RouterStateSnapshot): Observable<any> {
const id = route.paramMap.get('id');
return this.playerService.getPlayerCommonInfo(+id).catch((err: any) => of([err]));
}
...
home-resolver.service.ts
constructor(private playerService: PlayersService) {}
resolve(route: ActivatedRouteSnapshot, rstate: RouterStateSnapshot): Observable<any> {
return this.playerService.getPlayerBioStats();
}
【问题讨论】: