Angular2: enrutador extensible y observable

En angular2 rc2 con el módulo de enrutador v 3.0.0.6alpha, extiendo el RouterOulet para verificar si el usuario ha iniciado sesión antes de acceder al administrador. Entonces este es el código:

@Directive({
    selector: 'router-outlet'
})

export class LoggedInRouterOutlet extends RouterOutlet 
{
    publicRoutes: Array<string>;
    private parentOutletMap: RouterOutletMap;
    private userService: UserService;
    private parentRouter: Router;

    constructor(
        parentOutletMap: RouterOutletMap,
        _location: ViewContainerRef,
        @Attribute('name') name: string,
        userService: UserService,
        parentRouter: Router
    ) { 
        super(parentOutletMap, _location, name);

        this.parentRouter = parentRouter;
        this.parentOutletMap = parentOutletMap;
        this.userService = userService;
        this.publicRoutes = [
            'public', 
            'login'
        ];
    }

    activate(factory: ComponentFactory<any>, activatedRoute: ActivatedRoute, providers: ResolvedReflectiveProvider[], outletMap: RouterOutletMap) 
    {
        if (this._canActivate(factory.selector)) { 
            return super.activate(factory, activatedRoute, providers, outletMap); 
        }

        this.parentRouter.navigate(['/login']);
    }

    _canActivate(url) {
        return this.publicRoutes.indexOf(url) !== -1 || this.userService.isLoggedIn()
    }
}

userService.isLoggedIn () tiene que devolver un booleano. Mi pregunta es: ¿Cómo adapto mi código para hacer una llamada http para verificar si el usuario inició sesión? Porque si el método isLoggedIn devuelve un objeto observable y lo suscribo, no puedo devolver el resultado en la función principal.

Respuestas a la pregunta(1)

Su respuesta a la pregunta