I try to chain multiple rx.js observables and pass the data. Flatmap
should be the fitting operator but with an import of
import { Observable } from 'rxjs/Observable';
it is not found:
Error TS2339: Property 'flatmap' does not exist on type 'Observable<Coordinates>'
Version 5.0.0-beta.6
of rx.js is used.
public getCurrentLocationAddress():Observable<String> { return Observable.fromPromise(Geolocation.getCurrentPosition()) .map(location => location.coords) .flatmap(coordinates => { console.log(coordinates); return this.http.request(this.geoCodingServer + "/json?latlng=" + coordinates.latitude + "," + coordinates.longitude) .map((res: Response) => { let data = res.json(); return data.results[0].formatted_address; }); }); }
The problem is that flatMap is deprecated and replacing it with mergeMap won't work either. It seems mergeMap is a standalone function right now.
The FlatMap operator transforms an Observable by applying a function that you specify to each item emitted by the source Observable, where that function returns an Observable that itself emits items. FlatMap then merges the emissions of these resulting Observables, emitting these merged results as its own sequence.
It turns out the answer is quite simple:
the operator is called mergeMap
in this version of rxjs
EDIT:
Furthermore, you might have to use import 'rxjs/add/operator/mergeMap'
.
In my case I needed to import the augmentation for mergeMap:
import 'rxjs/add/operator/mergeMap';
As flatMap is an alias of mergeMap, importing the module above will enable you to use flatMap.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With