/ / Angular2: Prečo nie je povolený odber na objekte účastníka? - uhlový

Angular2: Prečo nie je povolený odber na objekte účastníka? - uhlový

Ak mám pozorovateľný objekt o:

let o: Observable<Object> = ...

Môžem sa prihlásiť k odberu tohto objektu, ale prečo nie je povolené prihlásiť sa k odberu objektu Účastník: Ak chcete dať príklad skutočného sveta:

  myServiceCall() {
let o: Observable<Object> = ...
return o.subscribe(...)
}

ngOnInit() {
this.myServiceCall().subscribe(...) // Not allowed on a Subscriber object
}

Sľubmi by bolo ako používať niekoľko potom v rade. Nevidím dôvod, prečo to nie je povolené.

odpovede:

0 pre odpoveď č. 1

Problém je, že myServiceCall metóda vráti podpis a nie je pozorovateľná. A nemôžete sa prihlásiť na odber. Tento objekt poskytuje a unsubscribe spôsob zrušenia upisovania proti pozorovateľným.

Možnosť by mohla byť použitie do operátor:

myServiceCall() {
let o: Observable<Object> = ...
return o.do((data) => { // <----
// do something with the received data without subscribing
});
}

ngOnInit() {
this.myServiceCall().subscribe(...) // Not allowed on a Subscriber object
}

0 pre odpoveď č. 2

subscribe() vráti a Subscription nie Observable, Nemôžete sa prihlásiť k odberu Subscription.

Použite namiesto toho

  myServiceCall() {
let o: Observable<Object> = ...
return o.map(...)
}

ngOnInit() {
this.myServiceCall().subscribe(...) // Not allowed on a Subscriber object
}