fromPromise не существует по типу Observable

в Angular 2 с помощью rxjs я пытался преобразовать обещание в наблюдаемое. Как показали многие онлайн-гиды, я использовал fromPromise on Observable. Который выдает ошибку:

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

Observable был импортирован как:

import { Observable } from "rxjs/Observable";

пытаюсь импортировать fromPromise как и другие операторы приводит к ошибке:

import 'rxjs/add/operator/fromPromise';

даже если я подавляю ошибку typescript, это все равно приводит к ошибке:

(<any>Observable).fromPromise

ошибка:

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

несколько похожая проблема была сообщается на RxJS repo здесь но и здесь нет решения.

1 ответов


обновление:

по состоянию на rxjs 6.0.0-бета.3, операторы и наблюдаемые создатели должны быть импортированы из rxjs. Более того,fromPromise больше не является частью публичного API и завернут в from метод.

TL; DR;

обновление

для rxjs 6.0.0 использовать:

import { from } from 'rxjs';

var observableFromPromise =  from(promiseSrc);

обновление:

после выхода pipeable операторы на rxjs 5.5.x, подход патча обезьяны сильно обескуражен. Рассмотрите возможность использования параметра static method.

оригинальный ответ

по состоянию на rxjs 5.4.x,fromPromise может использоваться как статический метод или может быть исправлен в Observable прототип.

для первого, вы можете сделать следующее:

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

var observableFromPromise = fromPromise(promiseSrc);

подробнее об этом подходе здесь

сделать второй, вы необходимо изменить оператор импорта:

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

var observableFromPromise = Observable.fromPromise(promiseSrc);

подробнее об этом подходе здесь

лично я бы рекомендовал первый, учитывая, что 2-й подход в основном является 1rst, с той разницей, что Observable прототип изменен.