Каков наилучший способ передачи всех аргументов из одного метода Typescript в другой - PullRequest
0 голосов
/ 25 апреля 2020

В моем приложении 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? Спасибо!

...