[英]Observable.of is not a function
我在我的項目中導入Observable.of
函數時遇到問題。 我的Intellij看到了一切。 在我的代碼中,我有:
import {Observable} from 'rxjs/Observable';
在我的代碼中我使用它:
return Observable.of(res);
有任何想法嗎?
其實我的進口搞砸了。 在最新版本的RxJS中,我們可以像這樣導入它:
import 'rxjs/add/observable/of';
如果在使用Angular 6 / rxjs 6時有任何人遇到此問題,請參閱此處的答案: 無法在RxJs 6和Angular 6中使用Observable.of
簡而言之,您需要像這樣導入它:
import { of } from 'rxjs';
而不是打電話
Observable.of(res);
只是用
of(res);
雖然聽起來很奇怪,但對於我來說,重要的是import {Observable} from 'rxjs/Observable
的導入路徑中的'O'。 如果我從rxjs/observable
導入Observable,則observable_1.Observable.of is not a function
的錯誤消息observable_1.Observable.of is not a function
保持存在。 奇怪,但我希望它能幫助別人。
我的愚蠢錯誤是我在需要觀察時忘了添加/add
。
是:
import { Observable } from 'rxjs/Observable';
import 'rxjs/observable/of';
其實在視覺上看起來很好,因為rxjs/observable/of
file,實際上存在。
應該:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
如果您使用的是Angular 6/7
import { of } from 'rxjs';
而不是打電話
Observable.of(res);
只是用
of(res);
無論出於何種原因,補丁對我不起作用,所以我不得不求助於這種方法:
import { of } from 'rxjs/observable/of'
// ...
return of(res)
您也可以通過這種方式導入所有運算符:
import {Observable} from 'rxjs/Rx';
這應該正常工作只是嘗試它。
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?
您必須更改導入和實例化。 查看Damien的博客文章
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);
});
我使用的是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中移動/更改了()功能
我今天遇到了這個問題。 我正在使用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加載庫的方式的這個小變化解決了我的問題。
對於Angular 5+:
import { Observable } from 'rxjs/Observable';
應該管用。 觀察者包應該與導入匹配,以及import { Observer } from 'rxjs/Observer';
如果你正在使用觀察者
import {<something>} from 'rxjs';
做了很大的進口,所以最好避免它。
RxJS 6
升級到RxJS
庫的版本6並且不使用rxjs-compat
包時,請使用以下代碼
import 'rxjs/add/observable/of';
// ...
return Observable.of(res);
必須改變成
import { of } from 'rxjs';
// ...
return of(res);
對我來說(Angular 5&RxJS 5),自動完成導入建議:
import { Observable } from '../../../../../node_modules/rxjs/Observable';
應該是(所有靜態運算符, from
, of
,工作正常:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
顯示了rxjs-compat的要求
require("rxjs-compat/add/observable/of");
我沒有安裝這個。 安裝者
npm install rxjs-compat --save-dev
並重新運行修復我的問題。
在rxjs
V6, of
操作者應該導入為import { of } from 'rxjs';
不知何故,甚至Webstorm都像import {of} from 'rxjs/observable/of';
那樣import {of} from 'rxjs/observable/of';
一切都開始奏效了
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.