Angular6:导航时在canActivate中保留查询参数

时间:2019-07-23 08:57:21

标签: javascript angular angular6 angular-routing

我正在使用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;
    }
  }

1 个答案:

答案 0 :(得分:0)

尝试返回urlTree而不是布尔值。

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" });

    }
  }