gpt4 book ai didi

子路由中的 Angular 2 路由参数

转载 作者:太空狗 更新时间:2023-10-29 17:14:50 26 4
gpt4 key购买 nike

我有一条路线:/app/project/23/views

路径的每一部分都是前一部分的 child ,所有 child 都是延迟加载的(不确定这里的延迟加载位是否相关)

/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 来获取(某些)父路由的路由参数?

是否有更好的方法从完整 路由获取参数,因为如果出现以下情况会发生什么:

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'}
]

最佳答案

您可以使用 pathFromRoot 属性访问路由树,它返回一个包含所有父节点的 ActivatedRoutes 数组。

this.route.pathFromRoot[2].params

关于子路由中的 Angular 2 路由参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40797043/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com