首先,对不起我的英语,我的英语说得不太好,但我会尽力向自己解释!
我正在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也不知道如何保留查询字符串,也可以节省我!
谢谢。
答案 0 :(得分:1)
听起来您应该将queryParamsHandling添加为“合并”或“保留”(取决于您的要求),例如
this.router.navigate(['categoria-listagem'], {
skipLocationChange: true,
queryParams: { page: 1, order: 'novidades' },
queryParamsHandling: "merge"
});
这会将您的新查询参数添加到您的URL中已经存在的所有参数。
另外,根据您需要的功能,您可能还需要删除skipLocationChange
。