Le angular2 documentation sur la Route des Gardes m'a laissé sait pas quand il est approprié d'utiliser un CanActivate
gardes contre une CanActivateChild
garde en combinaison avec des composants moins de routes.
TL;DR: quel est l'intérêt d'avoir canActivateChild
quand je peux utiliser un composant-moins de routes avec des canActivate
pour obtenir le même effet?
Version longue:
Nous pouvons avoir plusieurs gardes à tous les niveaux d'une hiérarchie de routage. L' routeur vérifie la CanDeactivate et CanActivateChild premiers gardes, du plus profond de l'enfant itinéraire vers le haut. Elle vérifie ensuite la CanActivate les gardes de haut en bas à la plus profonde de l'enfant de l'itinéraire.
Je reçois CanActivateChild
est vérifié de bas en haut et de l' CanActivate
est vérifié de haut en bas. Ce qui ne fait pas de sens pour moi, c'est l'exemple suivant de la doc:
@NgModule({
imports: [
RouterModule.forChild([
{
path: 'admin',
component: AdminComponent,
canActivate: [AuthGuard],
children: [
{
path: '',
canActivateChild: [AuthGuard],
children: [
{ path: 'crises', component: ManageCrisesComponent },
{ path: 'heroes', component: ManageHeroesComponent },
{ path: '', component: AdminDashboardComponent }
]
}
]
}
])
],
exports: [
RouterModule
]
})
export class AdminRoutingModule {}
Si l' admin
chemin a une composante de moins de route:
En regardant nos enfants passent sous la AdminComponent, nous avons un itinéraire avec un chemin d'accès et une aire bien mais ce n'est pas à l'aide d'un composant. Nous n'avez pas fait une erreur dans notre configuration, parce que nous pouvons utiliser un composant de moins en moins la route.
Pourquoi le code dans ce cas, l'insertion de l' AuthGuard
chez l'enfant et dans le composant racine (chemin de admin
)? Ne pas se suffire de garde à la racine?
J'ai créé un plunkr basées sur l'exemple qui supprime l' canActivateChild: [AuthGuard]
et ajoute un bouton de déconnexion sur l' AdminDashboard
. Bien sûr, l' canActivate
de la route parente garde encore, quel est l'intérêt d'en avoir canActivateChild
quand je peux utiliser des composants moins les routes avec des canActivate
?