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
прототип изменен.