gpt4 book ai didi

Angular CanActivate 守卫 - createUrlTree 相对导航

转载 作者:行者123 更新时间:2023-12-03 16:03:52 35 4
gpt4 key购买 nike

我目前有一个路线守卫,例如

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]));
}

我真的不喜欢。字符串操作对我来说是个大问题。

最佳答案

我有同样的感觉,并得到了类似的解决方案。主要问题是如果我们注入(inject) ActivateRoute使用构造函数,我们得到了之前的路线。
他们计划通过ActivateRoutecanActivate方法而不是 ActivatedRouteSnapshot .

这是门票:
https://github.com/angular/angular/issues/22763

您可以保留您的解决方案,直到 Angular 团队创建更好的解决方案。

问候。

关于Angular CanActivate 守卫 - createUrlTree 相对导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55904784/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com