CanActivate vs. CanActivateChild com rotas sem componente

A documentação angular2 sobreProtetores de rota me deixou incerto sobre quando é apropriado usar umCanActivate guardas contra umCanActivateChild guarda em combinação com rotas sem componentes.

TL; DR: qual é o sentido de tercanActivateChild quando eu posso usar rotas sem componentes comcanActivate para alcançar o mesmo efeito?

Versão longa:

Podemos ter vários guardas em todos os níveis de uma hierarquia de roteamento. O roteador verifica os guardas CanDeactivate e CanActivateChild primeiro, da rota filho mais profunda para o topo. Em seguida, ele verifica os protetores do CanActivate de cima para baixo até a rota filho mais profunda.

entendiCanActivateChild é verificado de baixo para cima eCanActivate está marcado de cima para baixo. O que não faz sentido para mim é o seguinte exemplo dado nos documentos:

@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 {}

Então oadmin path possui uma rota sem componente:

Observando nossa rota filho no AdminComponent, temos uma rota com um caminho e uma propriedade filhos, mas ela não está usando um componente. Não cometemos um erro em nossa configuração, porque podemos usar uma rota sem componente.

Por que o código neste caso está inserindo oAuthGuard no filho e no componente raiz (caminhoadmin)? Não seria suficiente guardar na raiz?

Eu criei umplunkr com base na amostra que remove ocanActivateChild: [AuthGuard] e adiciona um botão de logout noAdminDashboard. Com certeza, ocanActivate da rota pai ainda guarda, então qual é o sentido de tercanActivateChild quando eu posso usar rotas sem componentes comcanActivate?

questionAnswers(5)

yourAnswerToTheQuestion