fromPromise does not exist on type Observable
like what Jota said 'from' is the answer.
you can find the reference from here
https://www.learnrxjs.io/operators/creation/from.html
However, if you want to specify 'Promise to Observable' you could use 'fromPromise' like below.
import { from as fromPromise, Observable} from 'rxjs';
...
private getObservable(): Observable<any> {
return fromPromise(this.promise);
}
private getPromise() {
this.promise = new Promise((resolve, reject) => {
this.service.getPromise()
.then(response => {
// do sth
resolve(response);
});
});
}
UPDATE:
As of rxjs
6.0.0-beta.3, operators and observable creators should be imported from rxjs
. Furthermore, fromPromise
is not part of the public API anymore and its wrapped in the from
method.
TL;DR;
UPDATE
For rxjs 6.0.0 use:
import { from } from 'rxjs';
var observableFromPromise = from(promiseSrc);
UPDATE:
After the release of the pipeable operators in rxjs
5.5.x, the monkey patch approach is strongly discouraged. Consider to use the static method option.
Original answer
As of rxjs
5.4.x, fromPromise
can be used as a static method or can be patched into the Observable
prototype.
For the first, you can do the following:
import { fromPromise } from 'rxjs/observable/fromPromise';
var observableFromPromise = fromPromise(promiseSrc);
More info about this approach here
To do the second, you need to change your import statement:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromPromise';
var observableFromPromise = Observable.fromPromise(promiseSrc);
More info about this approach here
Personally I would recommend the first one, considering that the 2nd approach is basically the 1rst, with the difference that the Observable
prototype is changed.