【发布时间】:2016-10-23 05:12:35
【问题描述】:
我有一个实现 CanActivate 的 AuthGuard(用于路由)。
canActivate() {
return this.loginService.isLoggedIn();
}
我的问题是,CanActivate-result 依赖于 http-get-result - LoginService 返回一个 Observable。
isLoggedIn():Observable<boolean> {
return this.http.get(ApiResources.LOGON).map(response => response.ok);
}
我怎样才能将它们组合在一起 - 使 CanActivate 依赖于后端状态?
######
编辑:请注意,这个问题是从 2016 年开始的 - 角度/路由器的早期阶段已经被使用。
######
【问题讨论】:
-
你读过这里吗? angular.io/docs/ts/latest/guide/router.html 搜索 Route Guards 这是 CanActivate 的 api 参考:angular.io/docs/ts/latest/api/router/index/… 如您所见,它可以返回布尔值或 Observable
-
canActivate()可以返回一个Observable,只要确保Observable已经完成(即observer.complete())。 -
@PhilipBulley 如果 observable 发出更多值然后完成怎么办?守门员是做什么的?目前我看到的是使用
take(1)Rx操作符来实现stream的completnes,如果忘记添加怎么办?
标签: angular angular2-routing angular2-http