【发布时间】:2016-11-25 02:54:10
【问题描述】:
我有一条路线:/app/project/23/views
路径的每一部分都是前一部分的子节点,所有子节点都是延迟加载的(不确定这里的延迟加载位是否相关)
/app (root component)
/project (child component of app, child route of app)
/23 (route param 'projectId')
/views (child component of project, child route of project)
我正在尝试访问路由参数“projectId”(在本例中:23)
执行以下操作:
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.route.params.subscribe(params => {
console.log('params:', params);
}
给我一个 this.route.params 的空对象
params: {}
但是这样做:
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.route.parent.parent.params.subscribe(params => {
console.log('params:', params);
}
给我我想要的东西:
params: Object {projectId: "23"}
因为是子路由,是不是必须指定 this.route.parent.parent 才能获取(某些)父路由的路由参数?
有没有更好的方法从 full 路由中获取参数,因为如果发生以下情况会发生什么:
1) 我改变了子路径的深度并将其向下移动了一步。我现在是否必须更改我的代码才能说 this.route.parent.parent.parent.params
2) 或者说它是第 10 代(代?,子?,曾曾孙?)。然后我必须说:this.route.parent.parent.parent.parent.parent.parent.parent.parent.parent.params
--- 编辑:添加路由配置文件---
app.routing.ts
const routes: Routes = [
{path: 'app', loadChildren: './views/private/private.module#PrivateModule'}
];
private.routing.ts
const routes: Routes = [{
path: '',
component: PrivateComponent,
children: [
{path: 'project', loadChildren: './project/project.module#ProjectModule'},
{path: '', redirectTo: 'project', pathMatch: 'full'}
]
project.routing.ts
const routes: Routes = [{
path: ':projectId',
component: ProjectComponent,
children: [
{path: 'views', loadChildren: './views/views.module#ViewsModule'},
{path: '', redirectTo: 'views', pathMatch: 'full'}
]
【问题讨论】:
-
能否请您显示所有路由配置。您想在哪个组件中访问
params? -
@mxii 添加了路由配置