我想在Angular中制作自定义路由器。 以下是来自Angular document的示例路由器,其中包含一些更改:
const crisisCenterRoutes: Routes = [
{
path: 'crisis-center',
component: CrisisCenterComponent,
children: [
{
path: 'main',
component: CrisisListComponent,
children: [
{
path: '',
component: CrisisComponent
},
{
path: '',
component: CrisisPublicComponent
}
]
}
]
}
];
main
路径下有两个孩子。 两个孩子都有相同的路径!!! 我知道这个代码是不可能的。但是,如果user
为authorized
,我希望这些组件具有相同路径且条件,如果未加载first child
,我们会加载second child
。我知道我们可以通过某些方式执行此操作,例如组件中包含条件的ng-container
,但我想知道是否可以使用自定义router
。
答案 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