typescript 访问Angular 14中的父路由器参数

to94eoyn  于 2022-12-14  发布在  TypeScript
关注(0)|答案(1)|浏览(159)

使用Angular 14进行路由配置:

const routes: Routes = [{
    path: ':page',
    component: PageComponent,
    children: [
      {
        canActivate: [ValidPathGuard],
        path: ':subPage',
        component: SubPageComponent
      }
    ]
  }
]

有效路径保护:

export class ValidPathGuard implements CanActivate {
  canActivate(route: ActivatedRouteSnapshot) {
    console.log(route);
  }
}

route.params仅输出:{子路径:“子路径”}
如果我想访问:page,需要使用route.parent.params:{路径:'路径'}
但如果我会使用三级路线。
问题是我如何才能得到所有参数的对象?例如:{路径:'路径',子路径:'子路径' }

f0brbegy

f0brbegy1#

尝试访问路由的父示例,并继续搜索父示例,直到没有父示例为止(使用递归)

function mergeRouteParams(route: ActivatedRouteSnapshot, getter: (r: ActivatedRouteSnapshot) => Params): Params {
    if (!route) {
        return {};
    }
    const currentParams = route.params;
    return { ...mergeRouteParams(route.parent), ...currentParams };
}

相关问题