Angular 2 RC3 +路由器路径变量,带有特殊字符

时间:2016-07-07 10:27:17

标签: angular angular2-routing

我刚从RC2升级到新路由器。我的一个组件有一个路径:

/login/:email/:token

现在,当我输入类似/login/myemail@gmail.com/myToken的网址时,此组件未被提取。我发现它与我的电子邮件地址中的特殊字符@.有关。我放弃了它的工作原理。

使用javascripts encodeUriComponent()我可以对电子邮件进行编码(然后在组件中解码),但它只针对@,而不是.,因此它仍然无效。< / p>

为什么会发生这种情况,如何将电子邮件传递到此路径?

1 个答案:

答案 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