Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular6:导航时在canActivate中保留查询参数_Javascript_Angular_Angular6_Angular Routing - Fatal编程技术网

Javascript Angular6:导航时在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

我正在使用Auth guard检查登录,如果用户未登录,则在canActivate内我正在路由到登录页面,但在重定向时,我丢失了所有查询参数。我想保留我尝试过的所有查询参数
{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,})