我是 Angular 2 的新手。在 Angular.io 路由教程中,我看到 ActivatedRouteSnapShot 和 RouterStateSnapshot 总是在 AuthGuard 函数中声明(注入):canActivate、canActivateChild、resolve ...。但是,通常只使用 1 个。你可以在下面看到:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
let url: string = state.url;
return this.checkLogin(url);
}
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<Crisis> {
let id = route.params['id'];
return this.cs.getCrisis(id).then(crisis => {
if (crisis) {
return crisis;
} else { // id not found
this.router.navigate(['/crisis-center']);
return null;
}
});
}
Run Code Online (Sandbox Code Playgroud)
那么为什么总是需要同时注入两者呢?