В соответствии с типом CanActivate
:
export declare interface CanActivate {
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree;
}
метод canActivate
может возвращать Observable, Promise или Boolean.
Вы можете просто вернуть свой checkLogin()
вызов как :
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean>|boolean {
return this.logService.checkLogin();
}
и все будет работать.
ОБНОВЛЕНИЕ
, отвечая на вопрос "как мне обращаться с возвращенными логическое в моем canActivate " из комментариев
Идея CanActivate состоит в том, чтобы ограничить доступ к некоторым маршрутам из-за определенного условия. Вы можете выполнить некоторые побочные эффекты (но я не уверен, как они будут отображаться, если это не console.log), приковав цепью ваш Promise или Observable:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean>|boolean {
return this.logService
.checkLogin()
.then(canLogin => {
console.log('Can user login:', canLogin);
// perform you side effects here
})
}