查看从authguard
调用的canactivate
:
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private loginServicePOST:LoginService, private router:Router) { }
canActivate(next:ActivatedRouteSnapshot, state:RouterStateSnapshot) {
return this.loginServicePOST({...}).map(e => {
if (e) {
return true;
}
}).catch(() => {
return Observable.of(false);
});
}
}
此代码正常运行,并且会向服务器调用http请求。
问题:
这是一个冷可观察的,没有人.subscribe
- 所以我不明白这个post
请求是如何被调用的以及为什么。
subscribe
必须写成恕我直言。
NB
我已经知道canactivate
可以返回bool
/ Promise<bool>
/ Observable<bool>
答案 0 :(得分:1)
路由器正在订阅canActivate
返回的observable,它调用loginService(...).map(...)
返回的observable