【发布时间】:2020-11-06 14:39:23
【问题描述】:
我的路由器是这样的
const routes: Routes = [{
path: '',
canActivate: [AuthGuard],
resolve: {
user: UserResolver,
},
children: [{
path: 'home',
canActivate: [HomeGuard],
component: HomeComponent,
}, {
...otherRoutes,
}],
}];
为了授权访问,HomeGuard 需要UserResolver 检索到的数据中的数据。问题是HomeGuard 没有等待UserResolver 完成。
@Injectable({
providedIn: 'root',
})
export class UserResolver implements Resolve<any> {
constructor(private api: ApiService) { }
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<User> {
return this.api.getUser().pipe(
delay(1000), // simulates the api call duration
map((user: User) => {
console.log(user);
return user;
}),
);
}
}
在其他 stackoverflow 帖子中,人们声称解析器在导航之前解析对象,但这是否意味着守卫等待父解析器完成?
编辑。 使用守卫作为解析器可以吗?
【问题讨论】:
标签: angular observable angular-router angular-router-guards angular-resolver