我正在一个组件中工作,它会收到带有两个值的queryParam:
示例:http://localhost:4200/start/setup-employee?c=RCS8KR8J&email=test $#[email protected]
问题是,如果我得到queryParams参数“ c”可以,但是参数“ email”只返回“ test $”,因为#切断了参数。知道如何解决吗?我看到我可以把剩下的部分弄成碎片,但这也许是另一个很好的解决方案。谢谢,并提前表示感谢。
这不是Angular的错。这只是我们执行http请求时如何处理url的一种行为,不能在queryParam值中使用某些字符,因为该字符已经具有保留的含义。尝试将#替换为他的哈希值,并在其中分配值,例如:.replace('&', '%26');
。
当在URL中传递特殊的ml字符时,请在传递像这样的值之前使用encodeURIComponent函数
encodeURIComponent("test$#[email protected]");
输出
test%24%23myaddress%40gmail.com
然后做决定然后使用值
decodeURIComponent("test%24%23myaddress%40gmail.com");
输出
test$#[email protected]
这样就不会削减查询参数。这样,您可以随时在查询参数中使用所有特殊字符块来确保安全。