Ich habe folgendes Routing, die ich zur Anwendungskomponente importieren:Angular 2. CanActivate auf Last genannt nur
const routes: Routes = [
{
path: '',
component: MainLayoutComponent,
children: [
{
path: '', redirectTo: 'main', pathMatch: 'full'
},
{
path: 'main', loadChildren: 'app/main/main.module#MaindModule'
},
{
path: 'cars', loadChildren: 'app/cars/cars.module#CarsModule'
}
],
canActivate: [AuthGuard]
},
{
path: 'auth',
component: EmptyLayoutComponent,
loadChildren: 'app/auth/auth.module#AuthModule'
},
{
path: '**',
redirectTo: 'main'
}
];
export const routing: ModuleWithProviders = RouterModule.forRoot(routes);
Wie Sie ich habe canActivate
sehen können. Ich bemerkte, dass AuthGuard
aufgerufen wird, wenn ich die Anwendung in ersten Mal oder Schreibadresse in den Browser öffnen, aber wenn ich mein Menü URL ändern, dann wird AuthGuard
nicht genannt:
<a routerLink="/cars">
Was habe ich falsch gemacht?
AuthGuard:
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private authService: AuthService,
private router: Router) {}
canActivate() {
if (!this.authService.authenticated) {
this.router.navigate(['/auth/login']);
return false;
}
return true;
}
}
Code von 'AuthGuard'? –
@TouqeerShafi Ich glaube nicht, dass es mit AuthGuard selbst zusammenhängt, aber ich habe die Frage aktualisiert. – user348173
Vielleicht tut ['canActivateChild'] (https://angular.io/api/router/CanActivateChild), was Sie wollen. –