Angular 2路由器queryParams未添加到url中

时间:2018-02-12 11:18:33

标签: angular router query-parameters

我有一个版权保护,可以保护我的网络应用程序的某些页面。在重定向期间,我想将queryParams添加到我的网址,以允许用户返回他想要传递的网站。下面的代码工作了一段时间。今天我意识到queryParms不存在于url

async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
  let isLogged: boolean =  this.loggedInCustomer.isLoggedIn();
  if (!isLogged) {
    console.log(state.url);
    this.router.navigateByUrl(this.env.getLoginUrl(), { queryParams: {returnUrl: state.url}});
      return false;
    }
    return true;
 }

我已经检查过state.url这是正确的。所以问题可能在于创建路由器URL。

我做了临时解决方案

this.router.navigateByUrl(`${this.env.getLoginUrl()}?returnUrl=${state.url}`);

这是类似问题的链接 Setting router queryParams in angular 2 do not work

但我知道这不好。你能告诉我这个查询我做错了什么吗?为什么它停止工作?此致!

1 个答案:

答案 0 :(得分:0)

NavigateByUrl始终是绝对的Angular Doc's。相反,您可以使用navigate

    let navigationExtras: NavigationExtras = {
      queryParams: { 'returnUrl': state.url },
      fragment: 'anchor'
    };

    this.router.navigate([this.env.getLoginUrl()], navigationExtras);