从 Angular 中的另一个组件获取路由器参数



我正在使用Angular4。我有一些显示在app.component模板中的BarComponent(对于几乎所有页面,它就像菜单栏(。我想获取"属于"另一个组件的路由器参数,而不是 BarComponent 的子/子组件。
例如,我有以下路线:

/some-section-name/:id{here may be sub-routes}

我可以在 BarComponent 中使用 Angular 方法获取这个 :id 参数吗?
结构是这样的:

|- app.component
|- bar.component
|- (lazy load) some section
|- here is the component that has this :id param

我不得不多次面对这个问题,没有找到 angular 已经提供的任何内容来解决它。

因此,我做了一个特殊的服务routeReader,接收任何路由器激活的路由,然后在探索整个children树之前对其进行.root.snapshot

它可能会对你有所帮助。

这是仅读取主分支的方法之一,没有太多要更改的递归读取整个树。

getParamsFromTop(route: ActivatedRouteSnapshot) {
let paramsMap = {};
let routeCursor = route;
while (routeCursor) {
paramsMap = {...paramsMap, ...routeCursor.params};
routeCursor = routeCursor.children[0];
}
return paramsMap;
}

编辑1:如果您放置根路由快照,这样的事情应该可以工作。

getParamsRecurse(route: ActivatedRouteSnapshot) {
let paramsMap = {...route.params};
for (let i = 0; i < route.children.length; i++) {
paramsMap = {...paramsMap, ...this.getParamsRecurse(route.children[i])};
}
return paramsMap;
}

最新更新