Как применить CanActivate ко всем путям, кроме некоторых

1

У меня есть список путей, которые я хочу применить CanActivate ко всему пути, за исключением некоторого пути. Есть ли какой-либо способ в угловом порядке отбросить какой-то путь. В настоящее время я применяю canActivate ко всем URL-адресам. Если есть много URL-адресов, мы не хотим применять его ко всему URL-адресу, я буду применять к родительскому пути. Но если мы обратимся к родителям, это применимо и ко всем детям. Есть ли способ отбросить некоторых детей.

const routes: Routes = [
    { path : '', component: UsersListComponent, canActivate:[AuthenticationGuard] },
    { path : 'add', component : AddComponent, canActivate:[AuthenticationGuard]},
    { path : ':id', component: UserShowComponent },
    { path : 'delete/:id', component : DeleteComponent, canActivate:[AuthenticationGuard] },
    { path : 'ban/:id', component : BanComponent, canActivate:[AuthenticationGuard] },
    { path : 'edit/:id', component : EditComponent, canActivate:[AuthenticationGuard] }
];
  • 0
    Эй, решение сработало для вас?
Теги:
angular2-routing

1 ответ

0

Невозможно отбросить некоторых детей, но вы можете нарушить свои маршруты таким образом, чтобы гвардия применялась к некоторым, а не к некоторым,

Попробуйте ниже,

 {
    path: 'parentPath',
    component: ParentComponent,
    canActivate: [AuthGuard],
    children: [
      {path : 'child1', component: ChildComponent1},
      {path : 'child2', component: ChildComponent2}
    ]
  },
  {
    path: 'parentPath',
    component: ParentComponent,
    children: [
      {path : 'child3', component: ChildComponent3}
    ]
  }

Если вы проектируете свои маршруты, как указано выше, Gurads будут применяться только к child1 и child2, а не к child3.

Таким образом, вы можете легко применить Guard на родительском уровне для некоторых детей.

Вот Плункер !

Надеюсь это поможет!!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню