Angular 2 Routing中的重复查询参数

时间:2016-08-09 02:43:17

标签: angular angular2-routing

我正在将现有的应用程序转换为Angular 2,并且要求查询参数可以出现零次或多次(即重复次数)。一个示例是一个url,它有多个参数用于排序(如#/results/data;sort=column1;sort=column2)或调用Solr实例并指定多个facet过滤(https://cwiki.apache.org/confluence/display/solr/Common+Query+Parameters#CommonQueryParameters-Thefq(FilterQuery)Parameter)。通常,接收端点识别那些重复的参数并将它们显示为数组。

如何使用Angular 2路由执行此操作?我正在使用RC4和3.0-beta-2路由器。当我订阅ActivatedRoute并查看params时,只返回最后一个重复的值,但我知道传递了完整的网址,因为Location.path()显示了输入的内容。< / p>

例如,给出以下网址

https://localhost:44300/#/search;fq=efg:456;q=xyz;fq=abc

console.log(this.location.path(false));显示/search;fq=efg:456;q=xyz;fq=abc

但只返回Object {fq: "abc", q: "xyz"}

this.route.params.subscribe(params => {
   console.log(params);
});

3 个答案:

答案 0 :(得分:2)

<强>更新

这已经支持了一段时间。

<强>原单

目前不支持此功能。
有一个未解决的问题,最终会获得对多个值的支持。

https://github.com/angular/angular/issues/9477

答案 1 :(得分:1)

更新:现在应该是fixed

this.route.params.subscribe(params => {
   // assuming ?foo=a&foo=b&bar=c
   // should return an object {'foo': ['a', 'b'], 'bar': 'c'}
   console.log(params);
});

答案 2 :(得分:0)

为了在视图之间传递复杂数据,我认为您更适合使用注入每个组件而不是查询参数的服务。