【发布时间】:2018-08-30 10:32:06
【问题描述】:
我只是想不出解决此类问题的方法。我正在设计搜索引擎,我想在 url 中显示用户试图找到的内容:
https://my-site.com/search;query=%28rockstar;search=true;page=0
用户正在尝试查找(rockstar 短语。
当我将此网址粘贴到浏览器时,它按预期工作,但 Chrome 浏览器显示此网址如下:
https://my-site.com/search;query=(rockstar;search=true;page=0
所以%28 更改为(。我不知道这种行为是否依赖于 Angular 或浏览器。当我有 ( 的 url 时,刷新 F5 不起作用,因为 Angular 路由器报告这样的问题:
Cannot match any routes. URL Segment: 'rockstar;search=true;page=0'
从 url 地址栏复制链接也是无用的,因为这种行为复制的链接包含( 字符(不是%28)。如何防止url地址栏中的%28等特殊字符不被浏览器解码?问题出现在 Angular v5.2.5
这里是这个问题的演示:https://angular-url-problem.stackblitz.io
请注意,在 Angular 6 中该问题不存在:https://angular-url-problem-v6.stackblitz.io
【问题讨论】:
-
你能用最少的代码创建一个 StackBlitz 来重现问题吗?
-
如果没有人知道这个问题的答案,那么我会尽力提供。
-
@MarcinKapusta How to Ask 另有说明:
Help others reproduce the problem。请提供minimal reproducible example,以便我们无需自己实现即可对其进行测试(我坚持使用Verifiable,这意味着您必须重现该问题,而不仅仅是提供堆栈闪电) -
我问是因为我无法重现您的问题。如果我加载 angular-hzu1wi.stackblitz.io/… 它工作正常。
-
您无法重现,因为您在
?字符后使用查询参数。
标签: angular typescript angular-routing angular-router