我在这里看到了一些示例代码:
具体守则是:
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函数返回一个不再相关的值似乎很奇怪.因为你已经离开了请求的页面.
发布于 2021-05-28 15:37:07
它将返回false,但除此之外,它还将重定向user。
当您尝试导航到只有登录用户才能导航的某些路由时,这是非常有用的。因此,如果用户没有登录,您可能会将他重定向到Login Page并返回false。当您返回false时,当前导航将被取消。
接口,类可以实现该接口作为一个守卫,以决定是否可以激活路由。如果所有警卫返回true,导航将继续。如果任何警卫返回false,导航将被取消。
您还可以返回一个UrlTree,在这种情况下,当前的导航将被取消,一个新的导航将启动。
如果任何保护返回UrlTree,则取消当前导航,并开始从保护返回的UrlTree进行新的导航。
https://stackoverflow.com/questions/67741718
复制相似问题