首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >navigateByUrl in canActivate

navigateByUrl in canActivate
EN

Stack Overflow用户
提问于 2021-05-28 15:30:14
回答 1查看 374关注 0票数 2

我在这里看到了一些示例代码:

https://medium.com/javascript-everyday/keep-data-in-the-state-object-during-navigation-in-angular-5657af156fb8

具体守则是:

代码语言:javascript
复制
  canActivate(next: ActivatedRouteSnapshot, { url }: RouterStateSnapshot): boolean 
  {
       if (!this.authService.isLoggedIn) {
             this.router.navigateByUrl('/auth', { state: { redirect: url } });
       }

       return this.authService.isLoggedIn;
  }

如果this.authService.isLoggedIn = false,这里到底会发生什么?

然后在此函数中调用navigateByUrl,在返回 this.authService.isLoggedIn之前调用this.authService.isLoggedIn,这将如何表现?函数是否会将"false“作为”立即“的值返回?或者CanActivate会被navigateByUrl函数“中止”吗?

解释起来有点棘手,但是从CanActivate函数返回一个不再相关的值似乎很奇怪.因为你已经离开了请求的页面.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-28 15:37:07

它将返回false,但除此之外,它还将重定向user

当您尝试导航到只有登录用户才能导航的某些路由时,这是非常有用的。因此,如果用户没有登录,您可能会将他重定向到Login Page并返回false。当您返回false时,当前导航将被取消。

接口,类可以实现该接口作为一个守卫,以决定是否可以激活路由。如果所有警卫返回true,导航将继续。如果任何警卫返回false,导航将被取消。

您还可以返回一个UrlTree,在这种情况下,当前的导航将被取消,一个新的导航将启动。

如果任何保护返回UrlTree,则取消当前导航,并开始从保护返回的UrlTree进行新的导航。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67741718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档