【发布时间】:2018-10-19 09:27:29
【问题描述】:
在我的一些 Angular 路由守卫中,我想设置“下一个”路径,以便在成功登录后重定向到。
所以,普通的守卫canActivate 函数签名是这样的:
public canActivate(route: ActivatedRouteSnapshot): Observable<boolean> | boolean {
// ...blah
return true;
}
route 参数是ActivatedRouteSnapshot 的一个实例。
以前为了获得“下一个”网址,我只是从route.url 获得的。只要没有子路线,这就可以正常工作。
我的示例 URL 是/search/advanced?query_hash=1221d3b57f5616ee16ce70fdc78907ab,其中advanced 是search 的子路由。
子路由可以在route.children 中找到,但是遍历这些子路由(尤其是可能有多个级别)并以这种方式组合 URL 看起来既尴尬又丑陋。
我感兴趣的是包含在route._routerState.url 属性中(是一个字符串,在下图的底部),但它是一个“私有”变量。
我错过了什么吗?如何优雅地从ActivatedRouteSnapshot 获得完整的(带有子路径)URL? Angular 版本是 5.1。
【问题讨论】:
标签: angular angular-routing angular-router-guards