frumpromise n'existe pas sur type Observable

dans L'angle 2 en utilisant rxjs j'essayais de convertir une promesse en Observable. Comme beaucoup de guides en ligne ont montré que j'ai utilisé fromPromiseObservable. Ce qui déclenche une erreur:

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

Observables a été importé de la forme:

import { Observable } from "rxjs/Observable";

j'essaie de l'importer fromPromise comme les autres opérateurs entraîne une erreur:

import 'rxjs/add/operator/fromPromise';

même si j'efface l'erreur typographique, il en résulte une erreur:

(<any>Observable).fromPromise

Erreur:

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

un Peu problème similaire a été signalé sur rxjs repo ici mais il n'y a pas non plus de solution.

25
demandé sur Jota.Toledo 2017-08-20 20:16:02

1 réponses

mise à jour:

rxjs 6.0.0-bêta.3, les opérateurs et les créateurs observables devraient être importés de rxjs. En outre, fromPromise ne fait plus partie de L'API publique et est enveloppé dans le from méthode.

TL;DR;

UPDATE

Pour rxjs 6.0.0 utilisation:

import { from } from 'rxjs';

var observableFromPromise =  from(promiseSrc);

mise à jour:

après la sortie du pipeable les opérateursrxjs 5.5.x, l'approche patch du singe est fortement déconseillée. Envisagez d'utiliser l'option de la méthode statique.

réponse originale

rxjs 5.4.x,fromPromise peut être utilisé comme une méthode statique ou peut être inclus dans l' Observable prototype.

Pour la première, vous pouvez effectuer les opérations suivantes:

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

var observableFromPromise = fromPromise(promiseSrc);

Plus d'info sur cette approche ici

pour faire le second, vous besoin de modifier votre déclaration d'importation:

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

var observableFromPromise = Observable.fromPromise(promiseSrc);

Plus d'info sur cette approche ici

Personnellement, je recommanderais la première, considérant que la 2ème approche est fondamentalement la 1ère, avec la différence que l' Observable Le prototype est changé.

74
répondu Jota.Toledo 2018-05-04 09:24:51