Angular 2 路由器未正确导航查询参数

Angular 2 Router not navigating properly for query parameters

我正在为我的 Angular 应用程序实现登录功能。 当用户尝试登录时,我将他们路由到登录组件,如下所示:

this.router.navigate(['login'], {
  queryParams: {
    return: this.url
  }
});

当他们登录时,return将他们转到他们所在的页面。

这适用于应用中的位置,例如:

http://localhost:4200/category/Americana

当我进入登录页面时,URL 看起来像:

http://localhost:4200/login?return=%2Fcategory%2FAmericana

它 return 正确地:

http://localhost:4200/category/Americana

但是,当我尝试使用如下查询参数从路由登录时:

http://localhost:4200/categories/0?nav=All

登录页面如下所示:

http://localhost:4200/login?return=%2Fcategories%2F0%3Fnav%3DAll

但是它转到的 return 页面看起来像这样:

http://localhost:4200/categories/0%3Fnav%3DAll

因此,当我尝试从路线获取参数时,它们是空白的,因为它已在路线导航中混搭。

如何使 return 功能适用于查询参数?谢谢 - 我是这个路由的新手 - 对我放轻松 :)

已按照 J. Pinxter 的评论建议使用

解决此问题
this.router.navigateByUrl('categories/0?nav=All')