Javascript Angular6:导航时在canActivate中保留查询参数
我正在使用Auth guard检查登录,如果用户未登录,则在canActivate内我正在路由到登录页面,但在重定向时,我丢失了所有查询参数。我想保留我尝试过的所有查询参数Javascript Angular6:导航时在canActivate中保留查询参数,javascript,angular,angular6,angular-routing,Javascript,Angular,Angular6,Angular Routing,我正在使用Auth guard检查登录,如果用户未登录,则在canActivate内我正在路由到登录页面,但在重定向时,我丢失了所有查询参数。我想保留我尝试过的所有查询参数{queryParamsHandling:“preserve”,},但在这里不起作用 canActivate( route: ActivatedRouteSnapshot, state: RouterStateSnapshot ): boolean { let url: string = sta
{queryParamsHandling:“preserve”,}
,但在这里不起作用
canActivate(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): boolean {
let url: string = state.url;
return this.checkLogin(url, route);
}
checkLogin(url: string, route: ActivatedRouteSnapshot): boolean {
if (this.common.isUserLoggedIn()) {
return true;
} else {
this.router.navigate(["/login"], { queryParamsHandling: "preserve" });
return false;
}
}
尝试在else上返回urlTree而不是boolean
canActivate(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): boolean | UrlTree {
let url: string = state.url;
return this.checkLogin(url, route);
}
checkLogin(url: string, route: ActivatedRouteSnapshot): boolean | UrlTree {
if (this.common.isUserLoggedIn()) {
return true;
} else {
return this.router.createUrlTree(["/login"], {queryParamsHandling: "preserve" });
}
}
您是否尝试过使用
{queryParamsHandling:“merge”}
而不是preserve
?是的,它不起作用类型“AuthGuardService”中的属性“canActivate”不能分配给基类型“canActivate”中的相同属性。布尔| UrlTree'不可分配给type'(route:ActivatedRouteSnapshot,state:routerstatesnashot)=>boolean | Observable | Promise'。我也有同样的问题,通过显式传递查询参数来修复它,所以不是返回这个.router.createUrlTree([“/login”],{queryParamsHandling:“preserve”})代码>我写了返回这个.router.createUrlTree([“/login”],{queryParams:route.queryParams,})代码>