首页 文章

Angular2 canAcrivate基于路由参数?

提问于
浏览
0

我需要根据路由中传递的URL参数为我的angular2 app实现路由保护,例如:

http://myapp.com/test1/sites -------> where my routes use the test1 as a parameter :sitename

所以如果传递参数== test1则canActivate返回true,否则返回false .

那么如何实现呢?

2 回答

  • 1

    路线声明:

    {
      path: ':sitename/sites',
      component: SomeComponent,
      canActivate: [CanActivateSite]
    }
    

    然后守卫实施:

    @Injectable()
    class CanActivateSite implements CanActivate {
      canActivate(route: ActivatedRouteSnapshot): boolean {
        return route.params.sitename == 'test1';
      }
    }
    
  • 0

    路由保护类可以实现CanActivate接口,该接口强制您定义canActivate函数 . 此函数包含2个参数:ActivatedRouteSnapshot和RouterStateSnapshot . 看看ActivatedRouteSnapshot ...它包含有关路线的数据,包括params对象 .

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

相关问题