Angular URL嵌套路由中的括号-角度v4
我在Angular应用程序上的路由有问题,它在URL中添加了一个括号,但实际上不应该 我有一个“深层”嵌套路由,所以我一直在尝试不同的方法,但并不幸运 我只在筑巢的最底部有问题,所以最后一条路线是可能的 我期望的是: 我明白了: 我将代码与项目分离,并在GitHub上创建了一个简单的示例,因此您可以下载它,然后尝试使用它(很抱歉,无法在plunkr上实现) 有几个分支,尝试不同的方法 此外,您可以查看此公共链接以查看更详细的行为 有什么想法吗?谢谢Angular URL嵌套路由中的括号-角度v4,angular,angular-routing,Angular,Angular Routing,我在Angular应用程序上的路由有问题,它在URL中添加了一个括号,但实际上不应该 我有一个“深层”嵌套路由,所以我一直在尝试不同的方法,但并不幸运 我只在筑巢的最底部有问题,所以最后一条路线是可能的 我期望的是: 我明白了: 我将代码与项目分离,并在GitHub上创建了一个简单的示例,因此您可以下载它,然后尝试使用它(很抱歉,无法在plunkr上实现) 有几个分支,尝试不同的方法 此外,您可以查看此公共链接以查看更详细的行为 有什么想法吗?谢谢 我没有用更好的方法解决它,因为我最喜欢
我没有用更好的方法解决它,因为我最喜欢的解决方案是使用相对路径,我使用绝对路径,但至少,它确实有效 因此,我将侧栏HTML中的routerLink属性更改为使用click output事件调用方法,方法如下:
sidebarLink(item: string) {
let paths = window.location.hash.split('/');
if (paths.length >= this.limitCharPositionURL) {
paths = paths.slice(this.hashCharPosition, this.limitCharPositionURL);
paths.push(item);
paths[0] = '/' + paths[0];
this._router.navigate(paths);
}
}
因此,我正在构建limitCharPosition为1的路径,以从返回的位置哈希值中删除#。在这种情况下,limitCharPositionURL将为3,因为window.location.hash返回以下数组:
['#','客户','id']
因此,为了确保即使url较长,我也会将其截断为3
然后,我添加“概述”或“组”或我们需要的到阵列的链接。最后,我将“/”添加到第一个值,以使路线导航成为绝对的
您可以在本回购协议中找到解决方案:
以及在此链接中工作的演示:
希望对其他人有帮助
如果您有相同的错误并找到了另一个解决方案,请将其共享:)在路由器链接的开头添加/
[routerLink] = "/overview"
我不确定。但在这里查看源代码:github.com/angular/angular/blob/4.3.0/packages/router/src/…@line 428,通过搜索找到'(这可能是注定要发生的事情——我猜它可能有一些语义含义,比如可选参数。也许有人可以确认。好吧,它没有破坏功能。这在Angular 8中仍然是“破坏的”。我不知道为什么这是默认行为,不能被覆盖。如果我想要“次要”路径,为什么我可以自己添加该死的括号?这真的很难理解吗?是的,我意识到用大约40行代码,我可以编写自己的URL序列化覆盖。我只是觉得这很愚蠢。