Angular 2可以激活异步

时间:2016-12-29 09:44:08

标签: angular angular2-routing

我有一项服务,检查用户是否有权打开路线。

@Injectable()
export class GuardService implements CanActivate{
     user: User;
     constructor(private _userService: UserService) {
}

canActivate(): any{
    return this._userService.getUser().subscribe(user => {
        if(user.user_type == 'admin'){
            return true;
        }
        return false;
    });
}

但问题是它永远不会过去。问题在于这种可观察性,但我不知道如何处理它。我怎样才能做到这一点?提前致谢

1 个答案:

答案 0 :(得分:6)

通过将Observable更改为Subscription

,返回subscribe而不是map
canActivate(): any{
    return this._userService.getUser().map(user => {
        if(user.user_type == 'admin'){
            return true;
        }
        return false;
    }); // <<== added
}