Antworten:
Eigentlich habe ich Importe durcheinander gebracht. In der neuesten Version von RxJS können wir es so importieren:
import 'rxjs/add/observable/of';
operator/
- rxjs/add/operator/of
- importierte observable/
. D'oh.
Wenn jemand dieses Problem bei der Verwendung von Angular 6 / rxjs 6 hat, lesen Sie die Antworten hier: Observable.of konnte in RxJs 6 und Angular 6 nicht verwendet werden
Kurz gesagt, Sie müssen es wie folgt importieren:
import { of } from 'rxjs';
Und dann anstatt anzurufen
Observable.of(res);
benutz einfach
of(res);
Obwohl es absolut seltsam klingt, war es für mich wichtig, das 'O' im Importpfad von groß zu schreiben import {Observable} from 'rxjs/Observable
. Die Fehlermeldung mit observable_1.Observable.of is not a function
bleibt vorhanden, wenn ich das Observable aus importiere rxjs/observable
. Seltsam, aber ich hoffe, es hilft anderen.
Wenn Sie Angular 6/7 verwenden
import { of } from 'rxjs';
Und dann anstatt anzurufen
Observable.of(res);
benutz einfach
of(res);
Mein dummer Fehler war, dass ich vergessen habe hinzuzufügen /add
wenn das Observable benötigte.
War:
import { Observable } from 'rxjs/Observable';
import 'rxjs/observable/of';
Was optisch gut aussieht, weil rxjs/observable/of
Datei tatsächlich existiert.
Sollte sein:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
Das Patchen funktionierte aus irgendeinem Grund nicht für mich, daher musste ich auf diese Methode zurückgreifen:
import { of } from 'rxjs/observable/of'
// ...
return of(res)
Nur um hinzuzufügen,
Wenn Sie viele davon verwenden, können Sie alle mit importieren
import 'rxjs/Rx';
wie von @Thierry Templier erwähnt. Aber ich denke, wenn Sie einen begrenzten Operator verwenden, sollten Sie einzelne Operatoren wie importieren
import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/mergeMap';
import 'rxjs/add/observable/of';
wie von @uksz erwähnt.
Weil 'rxjs / Rx' alle Rx-Komponenten importiert, die definitiv Leistung kosten.
Sie können auch alle Operatoren folgendermaßen importieren:
import {Observable} from 'rxjs/Rx';
import { Observable } from 'rxjs/Observable' import 'rxjs/add/observable/of';
funktioniert nicht. Funktioniert nur import {Observable} from 'rxjs/Rx';
. Die Version ist 5.4.2
Observable_1.Observable.of(...).delay(...).timeout is not a function
. Ich habe nicht benutztimport 'rxjs/add/operator/timeout'
Ich verwende Angular 5.2 und RxJS 5.5.6
Dieser Code hat nicht funktioniert:
import { Observable,of } from 'rxjs/Observable';
getHeroes(): Observable<Hero[]> {
return of(Hero[]) HEROES;
}
Der folgende Code hat funktioniert:
import { Observable } from 'rxjs/Observable';
import { Subscriber } from 'rxjs/Subscriber';
getHeroes(): Observable<Hero[]>
{
return Observable.create((observer: Subscriber<any>) => {
observer.next(HEROES);
observer.complete();
});
}
Aufrufmethode:
this.heroService.getHeroes()
.subscribe(heroes => this.heroes = heroes);
Ich denke, sie könnten die () Funktionalität in RxJS 5.5.2 verschoben / geändert haben
Dies sollte richtig funktionieren, versuchen Sie es einfach.
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
// "rxjs": "^5.5.10"
import { of } from 'rxjs/observable/of';
....
return of(res)
Upgrade von Angular 5 / Rxjs 5 auf Angular 6 / Rxjs 6?
Sie müssen Ihre Importe und Ihre Instanziierung ändern. Schauen Sie sich Damiens Blog-Beitrag an
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);
});
Ich hatte heute dieses Problem. Ich verwende systemjs, um die Abhängigkeiten zu laden.
Ich habe die Rxjs wie folgt geladen:
...
paths: {
"rxjs/*": "node_modules/rxjs/bundles/Rx.umd.min.js"
},
...
Verwenden Sie anstelle von Pfaden Folgendes:
var map = {
...
'rxjs': 'node_modules/rxjs',
...
}
var packages = {
...
'rxjs': { main: 'bundles/Rx.umd.min.js', defaultExtension: 'js' }
...
}
Diese kleine Änderung in der Art und Weise, wie systemjs die Bibliothek lädt, hat mein Problem behoben.
Für Angular 5+:
import { Observable } from 'rxjs/Observable';
sollte arbeiten. Das Beobachterpaket sollte auch mit dem Import übereinstimmen, import { Observer } from 'rxjs/Observer';
wenn Sie Beobachter verwenden
import {<something>} from 'rxjs';
macht einen großen Import, also ist es besser, es zu vermeiden.
In rxjs
Version 6 sollte der of
Operator als importiert werdenimport { of } from 'rxjs';
Irgendwie hat es sogar Webstorm so gemacht import {of} from 'rxjs/observable/of';
und alles fing an zu funktionieren
import { of } from 'rxjs'; return of(res);
github.com/ReactiveX/rxjs/blob/master/MIGRATION.md#import-paths & github.com/ReactiveX/rxjs/blob/master/...