【发布时间】:2017-08-31 18:28:05
【问题描述】:
我有一个带有canActivate() 的工作angular2 守卫,它调用isLoggedIn() 的服务并返回一个承诺,然后解决并适当地处理路线。
但是,我正在尝试做相反的事情,看看用户何时没有登录,并且它不工作。
我尝试了这么简单的方法(添加一个 ! 运算符),希望它能起作用:
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private authService: AuthService) {}
canActivate() {
return !this.authService.isLoggedIn();
}
}
但是,这总是返回一个错误的值,并且路由永远不会激活。
这是我的isLoggedIn() 函数的相关摘录:
isLoggedIn(): Promise<Boolean> {
var component = this;
return new Promise((resolve, reject) => {
component.queryForUser((user) => {
resolve(user != null);
});
}
});
}
如果用户不等于null,那么他已经登录并且promise 解析为true。否则,假的。
虽然我可以简单地添加一个参数来指定我正在寻找的状态,甚至可以创建一个isNotLoggedIn() 函数,但逻辑相同但相反,我问,有没有办法否定承诺的解析值对于canActivate()?
【问题讨论】:
-
像对待承诺一样对待承诺。
.then(...)
标签: angular typescript promise angular2-routing