使用守卫,我尝试访问服务
但我无法在 canActivate 中返回承诺(它具有我无法更改的特定签名(
我的 autService 返回一个承诺,因为它是异步的
我怎样才能实现类似的东西:
@Injectable()
export class AuthGuardService implements CanActivate {
constructor(private authService: AuthService) {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
let url: string = state.url;
this.authService.canAccessUrl(url)
.then( (answer:boolean) => {return answer;} );
}
}
谢谢
你只需要更改canActivate 的签名
@Injectable()
export class AuthGuardService implements CanActivate {
constructor(private authService: AuthService) {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
let url: string = state.url;
this.authService.canAccessUrl(url)
.then( (answer:boolean) => {return answer;} );
}
}
请检查 https://angular.io/docs/ts/latest/api/router/index/CanActivate-interface.html