Kind guard: canActivateChild nicht funktioniert
Habe ich versucht, ein Kind zu bewachen, wie den eckig doc:
@Injectable()
export class AuthGuardService implements CanActivate, CanActivateChild {
constructor(private authService: AuthentificationService, private router: Router) {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
let url: string = state.url;
return this.checkLogin(url);
}
canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
return this.canActivate(route, state);
}
checkLogin(url: string): boolean {
/*****/
return false;
}
}
Mein routing.Modul:
import { AuthGuardService } from '../services/auth-guard.service';
const routes = [
{
path: '',
component: MyComponent,
canActivate: [AuthGuardService],
children: [{
path: '',
canActivateChild: [AuthGuardService],
children: [
{
path: 'candidature',
component: ListCandidatureComponent,
},
{
path: 'candidature/new',
component: NewCandidatureComponent
}]
}, {
path: 'login',
component: LoginComponent,
}]
}
]
Legte ich meine canActivateChild Wache auf der Komponenten-weniger Teil, zu bewachen dieses routing durch eine Authentifizierung.
Aber mit dieser Konfiguration, wenn ich versuchte Sie zu erreichen 'my.site.com/candidature" ich habe diesen Fehler:
Unhandled Promise rejection: guard is not a function ; Zone: angular ; Task: Promise.then ; Value: TypeError: guard is not a function
Normalerweise, wenn ich mich nicht authentitcated, muss ich auf die Anmeldeseite umgeleitet.
Hat jemand diese Fehlermeldung oder weiß, warum es Mittagessen?
Danke
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
canActivateChild: [AuthGuardService],
sollte nicht drin seinchildren
, aber erklärt bei der Eltern-route.Nicht sicher zu sein, dass, wenn Sie erklärt haben, die Kinder im inneren Kinder, die Sie brauchen, zu erklären, das
canActivateChild
im äußeren Kind als gut. Aber Sie können testen, mit und ohne es. Lassen Sie mich wissen, wenn es funktioniert!Hoffe, das hilft!
Wenn meine Lösung. Ich erkläre, für jemand anderes, der das selbe problem hat.
Vorbehalten wie die Tatsache, dass das routing-Modul werden ein Kind routing-Modul starten diese Fehlermeldung. Ich muss die AuthGuardService in de AppRouting verwendet werden, die in einem Kind-rounting-Modul wie dieses: