当我在订阅者中获得某个值时,我试图返回一个 observable,但我失败了。
这是代码:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot):Observable<boolean> {
// get route to be activated
this.routeToActivate = route.routeConfig.path;
// get user access levels
return this._firebase.isUserAdmin <-- returns Subscription, not Observable
.map(user => user.access_level)
.subscribe( access => {
// I need to return an observable here
});
}
角度 2 中的 observables 资源并不多,所以我不知道从哪里开始。有人可以帮忙吗?
更新 - >工作版本
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot):Observable<boolean> {
// get route to be activated
this.routeToActivate = route.routeConfig.path;
// get user access levels
return this._firebase.isUserAdmin
.map(user => {
let accessLevel = user.access_level;
if (accessLevel === 'admin' ) {
return true;
}
}).first();
}
原文由 Dragos Ionescu 发布,翻译遵循 CC BY-SA 4.0 许可协议
您不能从 subscribe 返回 observable,但如果您使用
map
而不是subscribe
Observable
。