Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular URL嵌套路由中的括号-角度v4_Angular_Angular Routing - Fatal编程技术网

Angular URL嵌套路由中的括号-角度v4

Angular URL嵌套路由中的括号-角度v4,angular,angular-routing,Angular,Angular Routing,我在Angular应用程序上的路由有问题,它在URL中添加了一个括号,但实际上不应该 我有一个“深层”嵌套路由,所以我一直在尝试不同的方法,但并不幸运 我只在筑巢的最底部有问题,所以最后一条路线是可能的 我期望的是: 我明白了: 我将代码与项目分离,并在GitHub上创建了一个简单的示例,因此您可以下载它,然后尝试使用它(很抱歉,无法在plunkr上实现) 有几个分支,尝试不同的方法 此外,您可以查看此公共链接以查看更详细的行为 有什么想法吗?谢谢 我没有用更好的方法解决它,因为我最喜欢

我在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序列化覆盖。我只是觉得这很愚蠢。