angular - propiedad - fromPromise no existe en el tipo Observable
promise to observable angular 6 (2)
En Angular 2 usando rxjs, estaba tratando de convertir una Promesa en Observable.
Como muchas guías en línea mostraron que utilicé desde
fromPromise
on
Observable
.
Que arroja error:
Property ''fromPromise'' does not exist on type ''typeof Observable''.
Observable fue importado como:
import { Observable } from "rxjs/Observable";
intentar importar desde
fromPromise
como otros operadores da como resultado un error:
import ''rxjs/add/operator/fromPromise'';
incluso si suprimo el error mecanografiado, todavía se produce un error:
(<any>Observable).fromPromise
Error:
Uncaught (in promise): TypeError: __WEBPACK_IMPORTED_MODULE_3_rxjs_Observable__.Observable.fromPromise is not a function
Se informó un problema similar en el repositorio de rxjs here pero tampoco hay solución allí.
como lo que Jota dijo ''de'' es la respuesta.
puedes encontrar la referencia desde aquí
https://www.learnrxjs.io/operators/creation/from.html
Sin embargo, si desea especificar ''Promesa de observación'', puede usar ''fromPromise'' como se muestra a continuación.
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);
});
});
}
ACTUALIZAR:
A partir de
rxjs
6.0.0-beta.3, los operadores y creadores observables deben importarse desde
rxjs
.
Además,
fromPromise
ya no es parte de la API pública y está envuelto en el método
from
.
TL; DR;
ACTUALIZAR
Para rxjs 6.0.0 use:
import { from } from ''rxjs'';
var observableFromPromise = from(promiseSrc);
ACTUALIZAR:
Después del lanzamiento de los
operadores canalizables
en
rxjs
5.5.x, se desaconseja encarecidamente el enfoque de parche de mono.
Considere usar la opción de método estático.
Respuesta original
A partir de
rxjs
5.4.x,
fromPromise
puede usarse como un método estático o puede parchearse en el prototipo
Observable
.
Para el primero, puede hacer lo siguiente:
import { fromPromise } from ''rxjs/observable/fromPromise'';
var observableFromPromise = fromPromise(promiseSrc);
Más información sobre este enfoque here
Para hacer lo segundo, debe cambiar su declaración de importación:
import { Observable } from ''rxjs/Observable'';
import ''rxjs/add/observable/fromPromise'';
var observableFromPromise = Observable.fromPromise(promiseSrc);
Más información sobre este enfoque here
Personalmente, recomendaría el primero, considerando que el segundo enfoque es básicamente el primero, con la diferencia de que el prototipo
Observable
cambia.