[英]navigateByUrl in canActivate
我在这里看到一些示例代码:
具体代码为:
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,这里到底会发生什么?
然后在此 function 中调用 navigateByUrl,在返回 this.authService.isLoggedIn之前,这将如何表现? function 会“立即”返回“false”作为值吗? 或者 CanActivate 会被 navigateByUrl function 以某种方式“中止”吗?
解释起来有点棘手,但是从不再相关的 CanActivate function 返回一个值似乎很奇怪......因为您已经离开了请求的页面......
它将返回false
,但另外它将重定向user
。
当您尝试导航到只有登录用户才能导航的某些路线时,这很有用。 因此,如果用户未登录,您可能会将他重定向到Login Page
并返回false
。 当您返回false
时,当前导航将被取消。
class 可以实现的接口,作为决定是否可以激活路由的守卫。 如果所有守卫都返回 true,则导航继续。 如果任何守卫返回 false,导航将被取消。
您还可以返回UrlTree ,在这种情况下,当前导航将被取消并开始新的导航。
如果任何守卫返回一个 UrlTree,则当前导航被取消,并且新的导航开始到从守卫返回的 UrlTree。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.