Angular Router,无法访问Guard中的子路由参数

时间:2019-02-08 22:16:41

标签: angular

const routes: Routes = [
  {
    path: ':parent_id',
    canActivate: [FirstDefaultChildGuard],
    component: ParentComponent,
    children: [
      {
        path: 'abc',
        children: [
          {
            path: ':child_id',
            component: ChildComponent
          }
        ],
      },
      // ...other children
    ],
  },
];

我有一个具有上述结构的应用程序。我想要的是每当打到/some_parent_id之类的URL时,它就会调用我的FirstDefaultChildGuard,并且基于数据库中的配置数据,我可以将其重定向到适当的子路由/some_parent_id/abc/some_child_id。 / p>

因此,如果用户点击的第一个网址为/parent_1,则可以正常重定向到/parent_1/abc/child_1

但是,如果用户随后导航到另一个孩子,请说/parent_1/abc/child_2并刷新它首先打到我的FirstDefaultChildGuard的页面,然后导航回child_1而不是停留在{{1 }}。

现在,如果我可以在警卫中访问child_2,则可以解决此问题,但是似乎在警卫:child_id中,我只能访问与警卫相同级别或更高级别的参数。因此,即使我的完整网址是ActivatedRouteSnapshot,我也只能在路由参数中看到{parent_id:'parent_1'}。

我似乎只是想不出一种更优雅地处理此问题的方法,也想不出使用regex解析url以外的方法以防卫我是否知道自己的/parent_1/abc/child_2是否已经路由。

0 个答案:

没有答案