可以使用 RxJS 的 toPromise() 方法将 Observable 转换为 Promise 来解决这个问题。以下是示例代码:
import { Injectable } from '@angular/core';
import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/toPromise';
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private router: Router) {}
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean {
return this.checkLogin().toPromise();
}
checkLogin(): Observable {
// Your auth logic here
}
}