2017-02-24 77 views
0

是否可以将路由器链接配置为仅添加到查询字符串中,以便我们可以通过一系列链接构建查询字符串?通过一系列路由器链接构建查询字符串参数

给出的URL:

http://localhost/app 

而且某处在页面上类似下面的链接:

<a [routerLink]="['.']" [queryParams]="{ foo: 1 }">link 1</a> 

会链接到:

http://localhost/app?foo=1 

有第二个环节:

<a [routerLink]="['.']" [queryParams]="{ bar: 1 }">link 2</a> 

是否有可能产生的路线:

http://localhost/app?foo=1&bar=1 

,而不是覆盖当前的查询字符串?我怀疑这是可能的,通过听取路由器事件并手动处理它,但我想知道是否不可能通过某种配置?

回答

0

这是很简单的获得使用可能保持富= 1 preserveQueryParams当前查询参数来自激活的路由,并根据需要进行浅度复制,以便返回路由器。

在HTML:

<a [routerLink]="['.']" [queryParams]="getQueryParams(1)">link 1</a> 
在组件

getQueryParams(id: number) { 
    //this.queryParams retrieved by subscribing to the activated route on init 
    let queryParams = Object.assign({}, this.queryParams); 
    queryParams['foo'] = id; 
    return queryParams; 
} 

它将返回键值对对象路由器预计,与所讨论的参数或者加入或查询参数与任何现有的完全重叠。

0

有在导航时吧= 1我还没有尝试过,但该文件说可以这样

<a [routerLink]="['.']" [queryParams]="{ bar: 1 }" preserveQueryParams>link 2</a> 
+0

是啊,这似乎不与供应任何查询参数一起工作。 – hdk

+1

嗯,它看起来像它会被覆盖仍然。这里看起来像一个很好的答案,可能有助于http://stackoverflow.com/questions/41726938/in-angular-2-how-to-preserve-query-params-and-add-additional-query-params-to- rou/41779740 – davidejones

+0

为此欢呼。这本质上是一个相同的问题,并已确定地回答了我的问题(没有本机配置解决方案)。如果我想出一个简单的解决方案,我可能会发布它,否则这个问题是多余的。 – hdk