Angular 9动态路线

时间:2020-05-04 14:09:38

标签: angular typescript

首先,对不起我的英语,我的英语说得不太好,但我会尽力向自己解释! 我正在Angular 9中创建一个电子商务,并且该电子商务的工作方式如下,当.html结尾时,每条路由都指向一个我称为路由器重定向的组件,当我陷入该组件时我称呼通过该网址的电子商务api,然后返回该网址是否是类别,产品,商品。通过此答案,我将重定向到正确的组件。

问题在于,在某些情况下,例如类别页面,我需要在URL中保留一些查询字符串,例如pageIndex和orderby,但是angular不会显示查询字符串,因为在导航时我放了skipLocationChange: true,因为我无法更改url,需要保留queryString。

仅当用户希望与其他人共享网址时,我才需要这样做。

我如何进行导航方法的示例:

this.router.navigate(['categoria-listagem'], {
      skipLocationChange: true,
      queryParams: { page: 1, order: 'novidades' }
});

如果有人知道更好的方法来进行此重定向,或者即使使用skipLocationChange也不知道如何保留查询字符串,也可以节省我!

谢谢。

1 个答案:

答案 0 :(得分:1)

听起来您应该将queryParamsHandling添加为“合并”或“保留”(取决于您的要求),例如

this.router.navigate(['categoria-listagem'], {
  skipLocationChange: true,
  queryParams: { page: 1, order: 'novidades' },  
  queryParamsHandling: "merge"
});

这会将您的新查询参数添加到您的URL中已经存在的所有参数。

另外,根据您需要的功能,您可能还需要删除skipLocationChange