Ответы:
На самом деле у меня испортился импорт. В последней версии RxJS мы можем импортировать это так:
import 'rxjs/add/observable/of';
operator/
- rxjs/add/operator/of
- вместо observable/
. D'о.
Если у кого-то возникла эта проблема при использовании Angular 6 / rxjs 6, посмотрите ответы здесь: Не удалось использовать Observable.of в RxJs 6 и Angular 6
Короче, вам нужно импортировать это так:
import { of } from 'rxjs';
А потом вместо звонка
Observable.of(res);
просто используйте
of(res);
Хотя это звучит абсолютно странно, для меня имело значение заглавная буква «О» на пути импорта import {Observable} from 'rxjs/Observable
. Сообщение об ошибке с постоянным observable_1.Observable.of is not a function
присутствием, если я импортирую Observable from rxjs/observable
. Странно, но я надеюсь, что это помогает другим.
Если вы используете Angular 6/7
import { of } from 'rxjs';
А потом вместо звонка
Observable.of(res);
просто используйте
of(res);
Моя глупая ошибка заключалась в том, что я забыл добавить, /add
когда требуется наблюдаемое.
Был:
import { Observable } from 'rxjs/Observable';
import 'rxjs/observable/of';
Который визуально выглядит нормально rxjs/observable/of
, потому что файл, на самом деле, существует.
Должно быть:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
По какой-то причине у меня не было исправлений, поэтому мне пришлось прибегнуть к этому методу:
import { of } from 'rxjs/observable/of'
// ...
return of(res)
Просто чтобы добавить,
если вы используете многие из них, то вы можете импортировать все, используя
import 'rxjs/Rx';
как упомянуто @Tierry Templier. Но я думаю, что если вы используете ограниченный оператор, то вы должны импортировать отдельный оператор, как
import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/mergeMap';
import 'rxjs/add/observable/of';
как упомянуто @uksz.
Потому что 'rxjs / Rx' будет импортировать все компоненты Rx, которые определенно стоят производительности.
Вы также можете импортировать все операторы следующим образом:
import {Observable} from 'rxjs/Rx';
import { Observable } from 'rxjs/Observable' import 'rxjs/add/observable/of';
не работает. Только import {Observable} from 'rxjs/Rx';
работает. Версия 5.4.2
Observable_1.Observable.of(...).delay(...).timeout is not a function
. Я не использовалimport 'rxjs/add/operator/timeout'
Я использую Angular 5.2 и RxJS 5.5.6
Этот код не работал:
import { Observable,of } from 'rxjs/Observable';
getHeroes(): Observable<Hero[]> {
return of(Hero[]) HEROES;
}
Ниже работает код:
import { Observable } from 'rxjs/Observable';
import { Subscriber } from 'rxjs/Subscriber';
getHeroes(): Observable<Hero[]>
{
return Observable.create((observer: Subscriber<any>) => {
observer.next(HEROES);
observer.complete();
});
}
Метод вызова:
this.heroService.getHeroes()
.subscribe(heroes => this.heroes = heroes);
Я думаю, что они могли бы переместить / изменить функциональность () в RxJS 5.5.2
Это должно работать правильно, просто попробуйте.
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
// "rxjs": "^5.5.10"
import { of } from 'rxjs/observable/of';
....
return of(res)
Обновлен с Angular 5 / Rxjs 5 до Angular 6 / Rxjs 6?
Вы должны изменить свой импорт и свою реализацию. Проверьте сообщение в блоге Дэмиена
Tl; др:
import { Observable, fromEvent, of } from 'rxjs';
const yourResult = Observable
.create(of(yourObservable))
.startWith(null)
.map(x => x.someStringProperty.toLowerCase());
//subscribe to keyup event on input element
Observable
.create(fromEvent(yourInputElement, 'keyup'))
.debounceTime(5000)
.distinctUntilChanged()
.subscribe((event) => {
yourEventHandler(event);
});
У меня была эта проблема сегодня. Я использую systemjs для загрузки зависимостей.
Я загружал Rxjs так:
...
paths: {
"rxjs/*": "node_modules/rxjs/bundles/Rx.umd.min.js"
},
...
Вместо использования путей используйте это:
var map = {
...
'rxjs': 'node_modules/rxjs',
...
}
var packages = {
...
'rxjs': { main: 'bundles/Rx.umd.min.js', defaultExtension: 'js' }
...
}
Это небольшое изменение в том, как systemjs загружает библиотеку, исправило мою проблему.
Для угловых 5+:
import { Observable } from 'rxjs/Observable';
должно сработать. Пакет наблюдателя также должен соответствовать импорту, import { Observer } from 'rxjs/Observer';
если вы используете наблюдателей, которые
import {<something>} from 'rxjs';
делает огромный импорт, так что лучше его избегать.
В rxjs
версии 6 of
оператор должен быть импортирован какimport { of } from 'rxjs';
Каким-то образом даже Webstorm сделал это так, import {of} from 'rxjs/observable/of';
и все начало работать
import { of } from 'rxjs'; return of(res);
github.com/ReactiveX/rxjs/blob/master/MIGRATION.md#import-paths & github.com/ReactiveX/rxjs/blob/master/…