Jawaban:
Sebenarnya impor saya kacau. Dalam versi terbaru RxJS kita dapat mengimpornya seperti itu:
import 'rxjs/add/observable/of';
operator/
- rxjs/add/operator/of
- bukan observable/
. Doh.
Jika ada yang mengalami masalah ini saat menggunakan Angular 6 / rxjs 6 lihat jawabannya di sini: Tidak dapat menggunakan Observable.of di RxJs 6 dan Angular 6
Singkatnya, Anda perlu mengimpornya seperti ini:
import { of } from 'rxjs';
Dan bukannya menelepon
Observable.of(res);
gunakan saja
of(res);
Meskipun kedengarannya sangat aneh, bagi saya itu penting untuk menggunakan huruf 'O' di jalur impor import {Observable} from 'rxjs/Observable
. Pesan kesalahan dengan observable_1.Observable.of is not a function
tetap ada jika saya mengimpor dari Observable from rxjs/observable
. Aneh tapi saya harap ini membantu orang lain.
Jika Anda menggunakan Angular 6/7
import { of } from 'rxjs';
Dan bukannya menelepon
Observable.of(res);
gunakan saja
of(res);
Kesalahan konyol saya adalah saya lupa menambahkan /add
ketika membutuhkan yang bisa diamati.
Dulu:
import { Observable } from 'rxjs/Observable';
import 'rxjs/observable/of';
Yang secara visual terlihat OK karena rxjs/observable/of
file, pada kenyataannya, ada.
Seharusnya:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
Patching tidak berfungsi untuk saya, untuk alasan apa pun, jadi saya harus menggunakan metode ini:
import { of } from 'rxjs/observable/of'
// ...
return of(res)
Hanya untuk menambahkan,
jika Anda menggunakan banyak dari mereka maka Anda dapat mengimpor semua menggunakan
import 'rxjs/Rx';
seperti yang disebutkan oleh @Thierry Templier. Tapi saya pikir Jika Anda menggunakan operator terbatas maka Anda harus mengimpor operator individual seperti
import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/mergeMap';
import 'rxjs/add/observable/of';
seperti yang disebutkan oleh @uksz.
Karena 'rxjs / Rx' akan mengimpor semua komponen Rx yang pasti membutuhkan biaya.
Anda juga dapat mengimpor semua operator dengan cara ini:
import {Observable} from 'rxjs/Rx';
import { Observable } from 'rxjs/Observable' import 'rxjs/add/observable/of';
tidak berfungsi. Hanya import {Observable} from 'rxjs/Rx';
bekerja. Versi ini adalah 5.4.2
Observable_1.Observable.of(...).delay(...).timeout is not a function
. Saya tidak menggunakanimport 'rxjs/add/operator/timeout'
Saya menggunakan Angular 5.2 dan RxJS 5.5.6
Kode ini tidak berfungsi:
import { Observable,of } from 'rxjs/Observable';
getHeroes(): Observable<Hero[]> {
return of(Hero[]) HEROES;
}
Kode di bawah ini berfungsi:
import { Observable } from 'rxjs/Observable';
import { Subscriber } from 'rxjs/Subscriber';
getHeroes(): Observable<Hero[]>
{
return Observable.create((observer: Subscriber<any>) => {
observer.next(HEROES);
observer.complete();
});
}
Metode panggilan:
this.heroService.getHeroes()
.subscribe(heroes => this.heroes = heroes);
Saya pikir mereka mungkin pindah / mengubah fungsionalitas () di RxJS 5.5.2
Ini harus bekerja dengan baik, coba saja.
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
// "rxjs": "^5.5.10"
import { of } from 'rxjs/observable/of';
....
return of(res)
Ditingkatkan dari Angular 5 / Rxjs 5 ke Angular 6 / Rxjs 6?
Anda harus mengubah impor dan instantiasi Anda. Lihat posting blog Damien
Tl; dr:
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);
});
Saya punya masalah ini hari ini. Saya menggunakan systemjs untuk memuat dependensi.
Saya sedang memuat Rxjs seperti ini:
...
paths: {
"rxjs/*": "node_modules/rxjs/bundles/Rx.umd.min.js"
},
...
Alih-alih menggunakan jalur gunakan ini:
var map = {
...
'rxjs': 'node_modules/rxjs',
...
}
var packages = {
...
'rxjs': { main: 'bundles/Rx.umd.min.js', defaultExtension: 'js' }
...
}
Ini sedikit perubahan dalam cara systemjs memuat perpustakaan memperbaiki masalah saya.
Untuk Angular 5+:
import { Observable } from 'rxjs/Observable';
harus bekerja. Paket pengamat juga harus sesuai dengan imporimport { Observer } from 'rxjs/Observer';
jika Anda menggunakan pengamat
import {<something>} from 'rxjs';
melakukan impor besar sehingga lebih baik untuk menghindarinya.
Dalam rxjs
v6, of
operator harus diimpor sebagaiimport { of } from 'rxjs';
Entah bagaimana bahkan Webstorm membuatnya seperti ini import {of} from 'rxjs/observable/of';
dan semuanya mulai berfungsi
import { of } from 'rxjs'; return of(res);
github.com/ReactiveX/rxjs/blob/master/MIGRATION.md#import-paths & github.com/ReactiveX/rxjs/blob/master/…