我正在使用Angular4。我有一些显示在app.component模板中的BarComponent(对于几乎所有页面,它都像菜单栏一样)。我想获得"属于"的路由器参数。到另一个组件,而不是BarComponent的子/子
例如,我有路线:
/some-section-name/:id{here may be sub-routes}
我可以使用BarComponent中的Angular方法得到这个:id param吗?
结构如下:
|- app.component
|- bar.component
|- (lazy load) some section
|- here is the component that has this :id param
答案 0 :(得分:0)
我不得不多次面对这个问题,没有发现角度已经提供的任何东西来解决它。
所以我做了一项特殊服务 routeReader 接收任何路由器或 ActivatedRoute ,然后在探索之前获取.root.snapshot
整个children
树。
它可能对你有帮助。
这是只读取主分支的方法之一,没有太多要改变来递归读取整个树。
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;
}