我正在将现有的应用程序转换为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);
});
答案 0 :(得分:2)
<强>更新强>
这已经支持了一段时间。
<强>原单强>
目前不支持此功能。
有一个未解决的问题,最终会获得对多个值的支持。
答案 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)
为了在视图之间传递复杂数据,我认为您更适合使用注入每个组件而不是查询参数的服务。