2017-07-18 31 views
0

我的Angular应用程序的路由有问题,它在URL上添加括号时应该不会。URL嵌套路由中的括号 - Angular v4

我有一个'深'嵌套路由,所以我一直在尝试不幸的方法。

我只有在嵌套的最底部的问题,所以最后的路线可能

,我希望这样的:

http://localhost:4200/#/customers/1/overview

我得到这个:

http://localhost:4200/#/customers/1/(overview)

我去耦从项目的代码,并在GitHub上创建了一个简单的示例,这样你就可以下载它,并与它尝试(抱歉,不能让它在plunkr)

https://github.com/ialex90/AngularErrorRouting

有一对夫妇的分支机构,尝试不同的方法,

此外,您可以检查此公开链接以查看更详细的行为。

https://angular-error-routing.netlify.com/#/dashboard

任何想法?谢谢!

enter image description here

+0

我不确定。但在这里查看源代码:github.com/angular/angular/blob/4.3.0/packages/router/src/... @通过搜索找到的第428行'(这可能是意味着发生的事情 - 而且我会冒险猜测它可能具有某种语义含义,如可选参数或许也许有人可以确认。AFAIK它不会破坏功能。 – JGFMK

回答

0

我解决它在没有更好的办法,因为我最喜欢的解决办法是用相对路径,我使用绝对路径成功了,但至少,它的工作。

于是,我改变了routerLink属性侧边栏的HTML内将调用与点击输出事件的方法,该方法是这样的:

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返回以下阵列:

[“#”,“客户”,“身份证”]

所以可以肯定,即使网址然后,我将“概览”或“组”或我们需要的链接添加到数组中。很抱歉,我把'/'加到第一个值上,以使路线导航绝对。

你可以找到在此回购的解决方案: https://github.com/ialex90/AngularErrorRouting/tree/Routing

并演示在这个环节的工作: https://neurologist-antelope-53654.netlify.com/#/dashboard

enter image description here

希望它可以帮助别人。

如果你有同样的错误,并找到另一种解决方案,请分享:)