Próbuję zwrócić obserwowalne, gdy otrzymam określoną wartość w subskrybenta, ale niestety nie.Powrót do obserwowania z subskrypcji
Jest to kod:
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
});
}
Nie ma zbyt wielu zasobów na obserwabli w kątowej 2, więc nie wiem od czego zacząć. Czy ktoś może w tym pomóc?
UPDATE -> Wersja robocza
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();
}
Powinieneś googlowania obserwabli w ** rxjs ** zamiast NG2. jest mnóstwo zasobów. – drewmoore
Dziękuję! Próbowałem tego, ale nie są one w tym samym formacie, w jakim Angular 2 je używa. Chyba będę musiał się tego nauczyć od zera. –
Czy możesz wyjaśnić kontekst tego kodu? Ponieważ 'subscribe' zwraca obiekt' Subscription', aby zrezygnować z subskrypcji, a zatem nie można go przeciągnąć, zazwyczaj chcesz zrobić 'obserwowalny.subscribe (...); return obserservable'. – estus