Respuestas:
En realidad tengo las importaciones en mal estado. En la última versión de RxJS podemos importarlo así:
import 'rxjs/add/observable/of';
operator/
- rxjs/add/operator/of
- en lugar de observable/
. D'oh
Si alguien tiene este problema mientras usa Angular 6 / rxjs 6, vea las respuestas aquí: No se pudo usar Observable.of en RxJs 6 y Angular 6
En resumen, debe importarlo así:
import { of } from 'rxjs';
Y luego en lugar de llamar
Observable.of(res);
Solo usa
of(res);
Aunque suena absolutamente extraño, para mí fue importante capitalizar la 'O' en la ruta de importación de import {Observable} from 'rxjs/Observable
. El mensaje de error con observable_1.Observable.of is not a function
permanece presente si importo el Observable desde rxjs/observable
. Extraño pero espero que ayude a otros.
Si está usando Angular 6/7
import { of } from 'rxjs';
Y luego en lugar de llamar
Observable.of(res);
Solo usa
of(res);
Mi error tonto fue que olvidé agregar /add
cuando requería lo observable.
Estaba:
import { Observable } from 'rxjs/Observable';
import 'rxjs/observable/of';
Que visualmente se ve bien porque el rxjs/observable/of
archivo, de hecho, existe.
Debiera ser:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
Los parches no me funcionaban, por cualquier razón, así que tuve que recurrir a este método:
import { of } from 'rxjs/observable/of'
// ...
return of(res)
Solo para agregar,
si está usando muchos de ellos, puede importarlos todos usando
import 'rxjs/Rx';
como lo mencionó @Thierry Templier. Pero creo que si está utilizando un operador limitado, debe importar un operador individual como
import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/mergeMap';
import 'rxjs/add/observable/of';
como lo menciona @uksz.
Porque 'rxjs / Rx' importará todos los componentes Rx que definitivamente cuestan rendimiento.
También puede importar todos los operadores de esta manera:
import {Observable} from 'rxjs/Rx';
import { Observable } from 'rxjs/Observable' import 'rxjs/add/observable/of';
no funciona. Solo import {Observable} from 'rxjs/Rx';
funciona. La versión es 5.4.2
Observable_1.Observable.of(...).delay(...).timeout is not a function
. No import 'rxjs/add/operator/timeout'
Estoy usando Angular 5.2 y RxJS 5.5.6
Este código no funcionó:
import { Observable,of } from 'rxjs/Observable';
getHeroes(): Observable<Hero[]> {
return of(Hero[]) HEROES;
}
El siguiente código funcionó:
import { Observable } from 'rxjs/Observable';
import { Subscriber } from 'rxjs/Subscriber';
getHeroes(): Observable<Hero[]>
{
return Observable.create((observer: Subscriber<any>) => {
observer.next(HEROES);
observer.complete();
});
}
Método de llamada:
this.heroService.getHeroes()
.subscribe(heroes => this.heroes = heroes);
Creo que podrían mover / cambiar la funcionalidad () en RxJS 5.5.2
Esto debería funcionar correctamente, solo pruébalo.
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
// "rxjs": "^5.5.10"
import { of } from 'rxjs/observable/of';
....
return of(res)
¿Actualizado de Angular 5 / Rxjs 5 a Angular 6 / Rxjs 6?
Debe cambiar sus importaciones y su instanciación. Mira la publicación de blog de 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);
});
Tuve este problema hoy. Estoy usando systemjs para cargar las dependencias.
Estaba cargando los Rxjs así:
...
paths: {
"rxjs/*": "node_modules/rxjs/bundles/Rx.umd.min.js"
},
...
En lugar de usar rutas, use esto:
var map = {
...
'rxjs': 'node_modules/rxjs',
...
}
var packages = {
...
'rxjs': { main: 'bundles/Rx.umd.min.js', defaultExtension: 'js' }
...
}
Este pequeño cambio en la forma en que systemjs carga la biblioteca solucionó mi problema.
Para Angular 5+:
import { Observable } from 'rxjs/Observable';
Deberia trabajar. El paquete del observador también debe coincidir con la importaciónimport { Observer } from 'rxjs/Observer';
si está utilizando observadores que son
import {<something>} from 'rxjs';
hace una gran importación, así que es mejor evitarlo.
En rxjs
v6, el of
operador debe importarse comoimport { of } from 'rxjs';
De alguna manera, incluso Webstorm lo hizo así import {of} from 'rxjs/observable/of';
y todo comenzó a funcionar
import { of } from 'rxjs'; return of(res);
github.com/ReactiveX/rxjs/blob/master/MIGRATION.md#import-paths & github.com/ReactiveX/rxjs/blob/master/…