Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

rxjs flatmap missing

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;               });       });   } 
like image 375
Georg Heiler Avatar asked Jul 20 '16 12:07

Georg Heiler


People also ask

Is FlatMap deprecated in RXJS?

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.

What is FlatMap in RXJS?

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.


2 Answers

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'.

like image 98
Georg Heiler Avatar answered Sep 19 '22 00:09

Georg Heiler


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.

like image 32
Chris Peacock Avatar answered Sep 21 '22 00:09

Chris Peacock