fromPromise no existe en tipo Observable


En Angular 2 usando rxjs estaba tratando de convertir una Promesa a Observable. Como muchas de las guías en línea mostraron usé fromPromise en Observable. Que lanza error:

Property 'fromPromise' does not exist on type 'typeof Observable'.

Observable fue importado como:

import { Observable } from "rxjs/Observable";

Intentar importar fromPromise como otros operadores resulta en un error:

import 'rxjs/add/operator/fromPromise';

Incluso si suprimo el error de typescript, sigue resultando en error:

(<any>Observable).fromPromise

Error:

Uncaught (in promise): TypeError: __WEBPACK_IMPORTED_MODULE_3_rxjs_Observable__.Observable.fromPromise is not a function

Se informó de un problema algo similar en el repositorio rxjs aquí pero no hay solución allí tampoco.

Author: Jota.Toledo, 2017-08-20

1 answers

ACTUALIZACIÓN:

A partir de rxjs 6.0.0-beta.3, los operadores y creadores observables deben importarse de rxjs. Además, fromPromise ya no es parte de la API pública y está envuelto en el método from.

TL; DR;

UPDATE

Para rxjs 6.0.0 use:

import { from } from 'rxjs';

var observableFromPromise =  from(promiseSrc);

ACTUALIZACIÓN:

Después del lanzamiento de los operadores pipeables en rxjs 5.5.x, el enfoque de parche de mono está fuertemente desaconsejado. Considere usar la opción método estático.

Respuesta original

A partir de rxjs 5.4.x, fromPromise puede ser utilizado como un método estático o puede ser parcheado en el prototipo Observable.

Para la primera, puedes hacer lo siguiente: {[15]]}

import { fromPromise } from 'rxjs/observable/fromPromise';

var observableFromPromise = fromPromise(promiseSrc);

Más información sobre este enfoque aquí

Para hacer el segundo, necesita 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 aquí

Personalmente me gustaría recomendar el primero, teniendo en cuenta que el 2do enfoque es básicamente el 1rst, con la diferencia de que el prototipo Observable se cambia.

 74
Author: Jota.Toledo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-04 09:24:51