【问题标题】:Angular 4 is cutting queryParams with hashAngular 4 正在使用散列切割 queryParams
【发布时间】:2019-12-12 18:50:57
【问题描述】:
我正在一个组件中工作,该组件接收具有两个值的 queryParam:
示例:
http://localhost:4200/start/setup-employee?c=RCS8KR8J&email=test$#myaddress@gmail.com
问题是如果我得到 queryParams 参数“c”是可以的,但参数“email”只返回“test$”,因为 # 剪切了参数。
知道如何解决这个问题吗?我看到我可以在片段中获得其余部分,但也许是另一个很好的解决方案。
【问题讨论】:
标签:
angular
parameters
routes
【解决方案1】:
当在 url 中传递特殊的 ml 字符时,在传递这样的值之前使用 encodeURIComponent 函数
encodeURIComponent("test$#myaddress@gmail.com");
输出
test%24%23myaddress%40gmail.com
然后做决定然后使用值
decodeURIComponent("test%24%23myaddress%40gmail.com");
输出
test$#myaddress@gmail.com
这种方式不会发生查询参数的切割。
这样,您可以随时在查询参数中使用所有特殊字符块。
【解决方案2】:
这不是 Angular 的错。这只是我们在执行 http 请求时如何处理 url 的一种行为,某些字符不能在 queryParam 值中使用,因为该字符已经具有保留含义。尝试将 # 替换为他的哈希值,您可以在其中分配值,例如:.replace('&', '%26');。