如何在canActive路由中获取当前路由?

Yas*_*svi 5 webpack angular2-routing angular

我想根据角色限制路线。我想在我的 canActivate 方法中检查导航路线是否有权访问页面。但是,this.router.url这给了我以前的路线而不是当前的导航路线。

Mar*_*vic 8

使用route: ActivatedRouteSnapshot可以解决您的问题:

canActivate(route: ActivatedRouteSnapshot) {
      console.log(route.url);

      ...
}
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看 ActivatedRouteSnapshot 对象的完整规范:

https://angular.io/docs/ts/latest/api/router/index/ActivatedRouteSnapshot-interface.html


mok*_*mok 6

您可能有兴趣从RouterStateSnapshot该版本canActivate方法中的参数获取 url以获取完整路径(使用 Angular 5 测试):

public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
       console.log(state.url);
}
Run Code Online (Sandbox Code Playgroud)