【发布时间】:2018-02-10 15:28:00
【问题描述】:
在对 Angular 4 中各种类型的路由搜索多个线程/问题后,我无法解决与将 queryParams 传递给 Angular 4 路由相关的问题。
当传入网址时
http://localhost/search;x=y
通过模板 [queryParams]={x: 'y'}
<a [routerLink]="/search" [queryParams]="{x: 'y'}">Navigate</a>
或在组件类中
this._router.navigate(['/search'], { queryParams: {x: 'y'} });
结果是路由器抛出匹配错误:
Error: Cannot match any routes. URL Segment: 'search%3Fparam1%3Dtest1%26param2%3Dtest2'
将 enableTracing 设置为 true 时,我可以看到导航对可疑字符进行了编码,这很可能是它无法匹配的原因。
我需要处理包含 queryParams 的 url 并解析它们以进行 api 调用,因此查询参数路由必须在必需或可选参数上使用。
有没有人遇到过类似的问题,如果有,编码是问题的根源吗?
【问题讨论】:
-
你能告诉我们你的路线在定义中的路径吗?应该是
{ path: 'search/:x', component: MyComponent}。如果没有,这是你的错误! -
不完全。 QueryParams 应该不在路由定义中定义。如果他们是......那么 that 就是问题所在。 :-)
标签: angular angular2-routing url-encoding query-parameters