角度 2 - 内部的服务调用可以激活



使用守卫,我尝试访问服务

但我无法在 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

最新更新