如何获取当前的航路段(不是完整的url)

问题描述 投票:0回答:1

我已经看到许多有关在Angular中获取当前路线的问题。据我所知,我审核过的每个问题和相关答案都将返回完整的当前URL。

constructor(router: Router){}

myMethod(){
    this.router.url // returns the full URL, regardless of where in the routing tree
                    // the component is being instantiated.
}

我想找到路由器要路由到我的组件的特定网段。该组件在路径中可能被实例化了多次。我当前的代码正在获取full URL,但是我想知道实例化组件的特定段

更多信息:

该组件是自定义标签条。它提供了一个未命名的<router-outlet>,当用户单击选项卡时,将在其中渲染各个选项卡的内容。使用标签条的组件是延迟加载的。但是,其中一个选项卡还使用相同的“选项卡条”组件作为其内容(该组件也被延迟加载)。这是事情崩溃的地方。在浏览到这些嵌套选项卡之一时刷新浏览器时,出现错误:“无法激活已经激活的插座”。

调查该错误消息,它似乎是带有Angular的open issue

related issue中的建议解决方案可以消除错误,但也可以消除顶级标签条的内容。我在想,如果我可以更好地过滤建议的解决方案的RouterOutlet.deactivate()调用,则可以消除该错误,同时仍在所有嵌套级别上显示Tab Strips的内容。

改进的过滤要求Tab Strip组件知道路由器正在为其实例化的当前段。

尽管,此问题是关于从路由器获取当前段;修复导致我在此处出现的错误也将有所帮助。

angular typescript angular-router
1个回答
0
投票

UrlSegment可用于此目的。文档中的示例:

@Component({templateUrl:'template.html'})
class MyComponent {
  constructor(router: Router) {
    const tree: UrlTree = router.parseUrl('/team;id=33');
    const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];
    const s: UrlSegment[] = g.segments;
    s[0].path; // returns 'team'
    s[0].parameters; // returns {id: 33}
  }
}

https://angular.io/api/router/UrlSegment

© www.soinside.com 2019 - 2024. All rights reserved.