В моем приложении Angular есть следующее AuthGuardService
:
@Injectable({providedIn: 'root'})
export class AuthGuardService implements CanActivate, CanActivateChild {
constructor(private authService: AuthService, private router: Router) {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
return this.authService.isAuthenticated()
.then((authenticated: boolean) => {
if (authenticated) {
return true;
} else {
this.router.navigate(['/']);
return false;
}
});
}
// === The following code will produce an error ===
canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
this.canActivate(...arguments);
}
}
Чтобы получить более чистый код, я хочу повторно использовать метод canActivate
и, следовательно, вызывать его внутри canActivateChild
. Интересно, есть ли способ передать все аргументы canActivateChild
в вызов canActivate
. Примерно так:
this.canActivate(...arguments);
Как лучше всего добиться этого в Typescript? Спасибо!