切换到具有角度条件的下一个子路径

时间:2017-12-08 04:03:31

标签: angular routing

我想在Angular中制作自定义路由器。 以下是来自Angular document的示例路由器,其中包含一些更改:

const crisisCenterRoutes: Routes = [
  {
    path: 'crisis-center',
    component: CrisisCenterComponent,
    children: [
      {
        path: 'main',
        component: CrisisListComponent,
        children: [
          {
            path: '',
            component: CrisisComponent
          },
          {
            path: '',
            component: CrisisPublicComponent
          }
        ]
      }
    ]
  }
];

main路径下有两个孩子。 两个孩子都有相同的路径!!! 我知道这个代码是不可能的。但是,如果userauthorized,我希望这些组件具有相同路径且条件,如果未加载first child,我们会加载second child。我知道我们可以通过某些方式执行此操作,例如组件中包含条件的ng-container,但我想知道是否可以使用自定义router

1 个答案:

答案 0 :(得分:0)

听起来你真正想要的是一名护卫员。路线防护允许您执行检查(例如用户是否被授权)。如果检查为true,则路由到定义的路由。否则您将路由到备用路线。

您的路线配置将只有一个快乐的路径"路线。路线保护员会将用户路由到"失败的授权"路径使用代码。

以下是一个示例路径:

MODULE main 
VAR
    a_in0 : { NONE, Na, Nb, Ne };
    a_in1 : { NONE, Na, Nb, Ne };
    a_out0 : { NONE, Na, Nb, Ne };
    a_out1 : { NOONE, Ia, Ib, Ie };
    a_inkey : { NOKEY, Ka, Kb, Ke };
    a_outkey : { NOKEY, Ka, Kb, Ke };
    a : process alice (a_in0, a_in1, a_inkey, a_out0, a_out1, a_outkey);
    b : process bob (a_out0, a_out1, a_outkey, a_in0, a_in1, a_inkey);
FAIRNESS running;

LTLSPEC F (a.st = finish & b.st = done)

这是路线卫士:

            {
                path: 'movies',
                canActivate: [AuthGuard],
                component: MovieListComponent
            },

如果用户被授权,它们将被路由到路径中定义的主路由(在我的示例中为MovieListComponent。)如果用户未被授权,则保护将用户路由到登录路由,如上所示。

您可以在此处找到完整的工作示例:https://github.com/DeborahK/MovieHunter-routing