Angular 可选参数导致“%3F”被添加到 url 如果有尾随的“/”

Angular optional params cause "%3F" to be added to url if there is a trailing "/"

我 运行 我的 Angular 路由器出现了一个奇怪的错误。我所有的路由都有一个可选参数,当用户向 URL 添加尾随 / 时,我在可选参数末尾的 url 中添加了一个“%3F”(?的 ASCI 代码)范围。以这种方式运行的路由之一写为:

when('/:classification?/package/compare', {
   name: 'public-package-compare',
   templateUrl: '/pages/marketing/packages/compare',
   controller: 'PackageCompareController'
})

当我访问“/us/package/compare”或“/package/compare”时,我会被带到正确的 url

如果我访问“/us/package/compare/”,我将被带到“/us%3F/package/compare”,这不是有效的路线(这会破坏应用程序)。

我知道一些破解它的方法,但我想知道是否有一个已建立的 Angular 方法来处理这个问题。我知道我可以加倍我的路线并在末尾添加带有 / 的路线或添加 routeInterceptor 但我想知道解决此问题的最佳方法是什么。我目前使用的是 Angular 版本 v1.3.0-rc.2,并且我使用的是标准路由器。在此先感谢您的时间。

This angular issue and this pull request 似乎已经解决了这个问题。

不幸的是,该修复仅针对 1.3.10 及更高版本合并。您可能必须升级 Angular 版本才能解决该问题。

如果您无法升级 Angular 版本,您可以尝试使用正则表达式修复更新当前版本,尽管这听起来不是个好主意。