Angular CanActivate guard - createUrlTree相对导航
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Angular CanActivate guard - createUrlTree相对导航相关的知识,希望对你有一定的参考价值。
我目前有一个路线卫士,如
export class EntityGuard implements CanActivate
constructor(private readonly router: Router, ...)
canActivate(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<boolean | UrlTree>
...
为URL激活此保护
basePath/select/10/123
意思是
basePath/select/:type/:id
当满足某个条件时,我需要强制导航回来
basePath/select/:type
我怎么能用createUrlTree
做到这一点?例如。
if (...)
return of(this.router.createUrlTree([../', type]));
我需要设置
relativeTo: parent
选项。但是我似乎无法找到办法。
我目前的解决方案是
private navigateBack(route: ActivatedRouteSnapshot, state: RouterStateSnapshot)
const end = state.url.indexOf(route.url[route.url.length - 1].path);
const parentUrl = state.url.slice(0, end);
return of(this.router.createUrlTree([parentUrl]));
我真的不喜欢。字符串操作对我来说很重要。
答案
我感觉到了同样的情况,并得到了类似的解决方案。主要问题是如果我们使用构造函数注入ActivateRoute
,我们得到之前的路径。他们计划通过ActivateRoute
方法而不是canActivate
传递ActivatedRouteSnapshot
。
这是票:https://github.com/angular/angular/issues/22763
您可以保留您的解决方案,直到有角度的团队创建更好的解
问候。
以上是关于Angular CanActivate guard - createUrlTree相对导航的主要内容,如果未能解决你的问题,请参考以下文章
Angular 2 - 路由 - CanActivate 与 Observable 一起工作
Angular 2 路由已弃用:如何检测 CanActivate?