rxjs flatmap missing
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.
With RxJS 5.5+, the flatMap
operator has been renamed to mergeMap
. Instead, you should now use the mergeMap
operator in conjunction with pipe
.
You can still use flatMap using the alias FlatMap
.
RxJS v5.5.2 is the default dependency version for Angular 5.
For each RxJS Operator you import, including mergeMap
, you should now import from 'rxjs/operators' and use the pipe operator.
Example of using mergeMap on an Http request Observable
import { Observable } from 'rxjs/Observable';
import { catchError } from 'rxjs/operators';
...
export class ExampleClass {
constructor(private http: HttpClient) {
this.http.get('/api/words').pipe(
mergeMap(word => Observable.of(word.join(' '))
);
}
...
}
Notice here that flatMap
is replaced with mergeMap
and the pipe
operator is used to compose the operators in similar manner to what you're used to with dot-chaining.
See the rxjs documentation on lettable operators for more info https://github.com/ReactiveX/rxjs/blob/master/doc/lettable-operators.md