我刚从RC2升级到新路由器。我的一个组件有一个路径:
/login/:email/:token
现在,当我输入类似/login/myemail@gmail.com/myToken
的网址时,此组件未被提取。我发现它与我的电子邮件地址中的特殊字符@
和.
有关。我放弃了它的工作原理。
使用javascripts encodeUriComponent()
我可以对电子邮件进行编码(然后在组件中解码),但它只针对@
,而不是.
,因此它仍然无效。< / p>
为什么会发生这种情况,如何将电子邮件传递到此路径?
答案 0 :(得分:2)
rc.4中有一些重大变化:
http:对Http的URLSearchParams序列化的更改现在可以防止 在查询参数中编码这些字符 以前转换为百分比编码值@:$ ,; +; ? /
可以通过扩展覆盖默认编码行为 QueryEncoder,如URLSearchParams服务中所述。
https://github.com/angular/angular/blob/master/CHANGELOG.md
这些字符在rc.4之前也没有编码:
这些是未编码的字符:! $ \&#39; ()* + ,;一个9 - 。 _~? /
https://angular.io/docs/ts/latest/api/http/index/URLSearchParams-class.html