我需要根据路由中传递的URL参数为我的angular2 app实现路由保护,例如:
http://myapp.com/test1/sites -------> where my routes use the test1 as a parameter :sitename
所以如果传递参数== test1则canActivate返回true,否则返回false .
那么如何实现呢?
路线声明:
{ path: ':sitename/sites', component: SomeComponent, canActivate: [CanActivateSite] }
然后守卫实施:
@Injectable() class CanActivateSite implements CanActivate { canActivate(route: ActivatedRouteSnapshot): boolean { return route.params.sitename == 'test1'; } }
路由保护类可以实现CanActivate接口,该接口强制您定义canActivate函数 . 此函数包含2个参数:ActivatedRouteSnapshot和RouterStateSnapshot . 看看ActivatedRouteSnapshot ...它包含有关路线的数据,包括params对象 .
https://angular.io/docs/ts/latest/api/router/index/ActivatedRouteSnapshot-interface.html
2 回答
路线声明:
然后守卫实施:
路由保护类可以实现CanActivate接口,该接口强制您定义canActivate函数 . 此函数包含2个参数:ActivatedRouteSnapshot和RouterStateSnapshot . 看看ActivatedRouteSnapshot ...它包含有关路线的数据,包括params对象 .
https://angular.io/docs/ts/latest/api/router/index/ActivatedRouteSnapshot-interface.html