Angular 6添加查询参数而无需重新加载

时间:2018-08-31 08:58:33

标签: angular

我正在使用自定义管道过滤属性列表,并希望将所选过滤器添加到url,以便我的客户可以共享过滤后的列表

如果我使用它,那么页面将被重新加载:

this.router.navigate([], { relativeTo: this.activatedRoute, queryParams: { county: countyId }, queryParamsHandling: 'merge' });

我尝试添加它,但结果相同(但未写入浏览器历史记录):

skipLocationChange: true

所需的功能是,当使用管道时,我会更新查询参数,而没有其他事情,这有可能吗?

我不希望重新加载页面的原因是,我还有其他不需要重新加载的内容:)

2 个答案:

答案 0 :(得分:2)

如果您导航到使用与已经使用的组件相同的组件的路线,则不会重新加载该组件。

例如,如果您的URL是siteurl / products,而您使用查询字符串导航到siteurl / products,则不会调用ngOnInit。

您可以通过订阅queryParams更改来获得新的查询参数,例如:

constructor(
    private activatedRoute: ActivatedRoute,
) { }

this.activatedRoute.queryParams.subscribe(params => {
    console.log(params);
    // logic after subscribing
});

如果您需要更多控制,还可以手动将查询字符串参数添加到url,然后使用uri.js:https://medialize.github.io/URI.js/进行手动解析。

答案 1 :(得分:0)

看看this

我认为您需要Simon McClive的答案(请参阅onSameUrlNavigation选项)。