Odpowiedzi:
Właściwie to pomieszałem import. W najnowszej wersji RxJS możemy go zaimportować w następujący sposób:
import 'rxjs/add/observable/of';
operator/
- rxjs/add/operator/of
- zamiast observable/
. Nie.
Jeśli ktoś ma ten problem podczas korzystania z Angular 6 / rxjs 6, zobacz odpowiedzi tutaj: Nie można użyć Observable.of w RxJs 6 i Angular 6
Krótko mówiąc, musisz go zaimportować w następujący sposób:
import { of } from 'rxjs';
A potem zamiast dzwonić
Observable.of(res);
po prostu użyj
of(res);
Chociaż brzmi to absolutnie dziwnie, dla mnie liczyło się pisanie wielkimi literami „O” na ścieżce importu import {Observable} from 'rxjs/Observable
. Komunikat o błędzie z observable_1.Observable.of is not a function
pozostaje obecny, jeśli zaimportuję obiekt Observable rxjs/observable
. Dziwne, ale mam nadzieję, że to pomaga innym.
Jeśli używasz Angular 6/7
import { of } from 'rxjs';
A potem zamiast dzwonić
Observable.of(res);
po prostu użyj
of(res);
Moim głupim błędem było to, że zapomniałem dodać, /add
gdy wymagałem obserwacji.
Był:
import { Observable } from 'rxjs/Observable';
import 'rxjs/observable/of';
Który wizualnie wygląda OK, ponieważ rxjs/observable/of
plik faktycznie istnieje.
Powinien być:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
Łatki nie działały dla mnie z jakiegokolwiek powodu, więc musiałem skorzystać z tej metody:
import { of } from 'rxjs/observable/of'
// ...
return of(res)
Po prostu dodaj
jeśli używasz wielu z nich, możesz zaimportować wszystkie za pomocą
import 'rxjs/Rx';
jak wspomniano w @Thierry Templier. Ale myślę, że jeśli używasz ograniczonego operatora, powinieneś zaimportować indywidualnego operatora jak
import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/mergeMap';
import 'rxjs/add/observable/of';
jak wspomniał @uksz.
Ponieważ „rxjs / Rx” zaimportuje wszystkie komponenty Rx, które zdecydowanie kosztują wydajność.
Możesz również zaimportować wszystkich operatorów w ten sposób:
import {Observable} from 'rxjs/Rx';
import { Observable } from 'rxjs/Observable' import 'rxjs/add/observable/of';
nie działa. import {Observable} from 'rxjs/Rx';
Działa tylko . Wersja to 5.4.2
Observable_1.Observable.of(...).delay(...).timeout is not a function
. Nie korzystałemimport 'rxjs/add/operator/timeout'
Używam Angulara 5.2 i RxJS 5.5.6
Ten kod nie działał:
import { Observable,of } from 'rxjs/Observable';
getHeroes(): Observable<Hero[]> {
return of(Hero[]) HEROES;
}
Poniższy kod działał:
import { Observable } from 'rxjs/Observable';
import { Subscriber } from 'rxjs/Subscriber';
getHeroes(): Observable<Hero[]>
{
return Observable.create((observer: Subscriber<any>) => {
observer.next(HEROES);
observer.complete();
});
}
Metoda wywołania:
this.heroService.getHeroes()
.subscribe(heroes => this.heroes = heroes);
Myślę, że mogą przenieść / zmienić funkcjonalność () w RxJS 5.5.2
To powinno działać poprawnie, po prostu spróbuj.
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
// "rxjs": "^5.5.10"
import { of } from 'rxjs/observable/of';
....
return of(res)
Uaktualniono z Angular 5 / Rxjs 5 do Angular 6 / Rxjs 6?
Musisz zmienić import i instancję. Sprawdź post na blogu Damiena
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);
});
Miałem dzisiaj ten problem. Używam systemjs do ładowania zależności.
Ładowałem Rxj w ten sposób:
...
paths: {
"rxjs/*": "node_modules/rxjs/bundles/Rx.umd.min.js"
},
...
Zamiast używać ścieżek użyj tego:
var map = {
...
'rxjs': 'node_modules/rxjs',
...
}
var packages = {
...
'rxjs': { main: 'bundles/Rx.umd.min.js', defaultExtension: 'js' }
...
}
Ta niewielka zmiana w sposobie ładowania biblioteki systemjs naprawiła mój problem.
W rxjs
V6, of
operator powinien być importowane jakoimport { of } from 'rxjs';
Jakoś nawet Webstorm tak to zrobił import {of} from 'rxjs/observable/of';
i wszystko zaczęło działać
import { of } from 'rxjs'; return of(res);
github.com/ReactiveX/rxjs/blob/master/MIGRATION.md#import-paths & github.com/ReactiveX/rxjs/blob/master/…