Meu roteamento está configurado assim (nó pai principal com vários subnós filhos).
export const routes: Routes = [
{ path: "", component: HomeComponent },
{ path: "profile", component: ProfileComponent },
{
path: ":itemId", component: TabsComponent, children: [
{ path: "a", component: ComponentA, canActivate: [MsalGuard], canDeactivate: guard },
{ path: "b", component: ComponentB, canActivate: [MsalGuard], canDeactivate: guard },
{ path: "c", component: ComponentC, canActivate: [MsalGuard], canDeactivate: guard },
...
], canActivate: [MsalGuard]
},
...
{ path: "**", component: BoomComponent },
];
Notei que o canActivate: [MsalGuard]
para as abas (ou seja, a última) não é realmente útil, porque cada filho subcolocado também tem. Então, me ocorreu: há uma maneira de especificar canActivate
e canDeactivate
para que isso realmente influencie os subcaminhos individuais?
Algo parecido com o abaixo (que eu, naturalmente, testei e descobri que não faz o que eu quero).
...
{
path: ":itemId", component: TabsComponent, children: [
{ path: "a", component: ComponentA },
{ path: "b", component: ComponentB },
{ path: "c", component: ComponentC },
...
], canActivate: [MsalGuard], canDeactivate: guard
...
}
Do MSAL Guard - Documentação do Github os
MsalGuard
SuportesCanActivateChild
ecanLoad
. Então você poderia tentarCanActivateChild
guard em vez decanActivate
.