我试图在订阅器中获取特定值时返回一个可观测对象,但是我失败了。
这是代码:
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
});
}
在 Angular 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();
}
subscribe
返回一个Subscription
对象以取消订阅,因此不可链接,通常你会想要执行observable.subscribe(...); return observable
。 - Estus Flask