【问题标题】:Angular2 canAcrivate based on route parameter?Angular2 canAcrivate 基于路由参数?
【发布时间】:2017-02-23 17:55:38
【问题描述】:

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

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

所以如果传递的参数== test1 那么canActivate返回true,否则返回false。

那么如何实现呢?

【问题讨论】:

    标签: angular routes


    【解决方案1】:

    路线声明:

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

    然后是守卫实现:

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

    【讨论】:

    • 是否可以在双参数上实现相同的功能?像 :sitename/:class ?以及如何获得第二个参数?班级
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-21
      • 2016-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多