Después de mi 192a toma doble, noté que en mi código estaba importando desde operator/- rxjs/add/operator/of- en lugar de observable/. D'oh
EricRobertBrewer
Descubrí que no necesito usar esta declaración en uno de los proyectos angulares. Pero en el otro, tengo que importarlo. No entiendo las diferencias. ¿Sabes las razones?
niaomingjian
1
¿Versión angular, tal vez? No tuve que hacer esto para 4.3.2 pero sí para 5.0.0.
Draghon
@Draghon: Exactamente lo mismo conmigo. No tuve que hacerlo por 4.4, lo hago ahora por 5.2. Aún más extraño, solo tengo que incluirlo en un archivo y todos los demás archivos .ts simplemente lo recogen y listo.
JP ten Berge
2
¿Qué sucede si no puedo encontrar el módulo "rxjs / add / observable / of"?
¡Gracias! Descubrir las importaciones en Rx siempre es una gran fuente de frustración para mí debido a la volatilidad de la API.
DomenicDatti
43
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 functionpermanece presente si importo el Observable desde rxjs/observable. Extraño pero espero que ayude a otros.
Esto se debe a los cambios en la versión RxJS de 5 a 6 que introdujeron muchos cambios importantes. Puede consultar cómo migrar su proyecto Angular aquí: rxjs.dev/guide/v6/migration
Edric el
29
Mi error tonto fue que olvidé agregar /addcuando requería lo observable.
Estaba:
import { Observable } from 'rxjs/Observable';
import 'rxjs/observable/of';
Que visualmente se ve bien porque el rxjs/observable/ofarchivo, de hecho, existe.
Debiera ser:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
Esta no es una solución, esta es la sintaxis para Angular> = 6.0.0. Importar {de} desde 'rxjs' estuvo bien para mí. Ver stackoverflow.com/questions/38067580/…
mark_h
18
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
Descubrí que no necesito usar esta declaración en uno de los proyectos angulares. Pero en el otro, tengo que importarlo. No entiendo las diferencias. ¿Sabes las razones?
niaomingjian
16
También puede importar todos los operadores de esta manera:
No recomendaría importar de esta manera, ya que esta es una biblioteca bastante grande y "of" es una parte muy pequeña.
metthard
2
@methgaard 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
niaomingjian
@methgaard lo siento. Cometí un error. El hecho es que lo tengo Observable_1.Observable.of(...).delay(...).timeout is not a function. No import 'rxjs/add/operator/timeout'
Esta es una respuesta de solo código. ¿Podría explicar lo que intenta sugerir?
Peter Wippermann
1
Hola, solo debemos importar el operador que necesitamos, no todo el "Observable" debido a un problema de rendimiento. En la nueva versión (^ 5.5.10), la forma correcta de importar el operador "of" es: import {of} desde 'rxjs / observable / of' ... Funciona para mi caso. Editaré mi resolución. Gracias Peter
letanthang
4
¿Actualizado de Angular 5 / Rxjs 5 a Angular 6 / Rxjs 6?
Con 6.0, intentar suscribirse a Observable.create (of (val)) resultó en "this._subscribe no es una función". En cambio, creé con éxito un observable simplemente llamando "of (val)".
Jim Norman
3
RxJS 6
Al actualizar a la versión 6 de la RxJSbiblioteca y no usar el rxjs-compatpaquete, el siguiente código
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.
import { of } from 'rxjs'; return of(res);
github.com/ReactiveX/rxjs/blob/master/MIGRATION.md#import-paths & github.com/ReactiveX/rxjs/blob/master/…Respuestas:
En realidad tengo las importaciones en mal estado. En la última versión de RxJS podemos importarlo así:
fuente
operator/
-rxjs/add/operator/of
- en lugar deobservable/
. D'ohSi 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í:
Y luego en lugar de llamar
Solo usa
fuente
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 conobservable_1.Observable.of is not a function
permanece presente si importo el Observable desderxjs/observable
. Extraño pero espero que ayude a otros.fuente
Si está usando Angular 6/7
Y luego en lugar de llamar
Solo usa
fuente
Mi error tonto fue que olvidé agregar
/add
cuando requería lo observable.Estaba:
Que visualmente se ve bien porque el
rxjs/observable/of
archivo, de hecho, existe.Debiera ser:
fuente
Los parches no me funcionaban, por cualquier razón, así que tuve que recurrir a este método:
fuente
Solo para agregar,
si está usando muchos de ellos, puede importarlos todos usando
como lo mencionó @Thierry Templier. Pero creo que si está utilizando un operador limitado, debe importar un operador individual como
como lo menciona @uksz.
Porque 'rxjs / Rx' importará todos los componentes Rx que definitivamente cuestan rendimiento.
fuente
También puede importar todos los operadores de esta manera:
fuente
import { Observable } from 'rxjs/Observable' import 'rxjs/add/observable/of';
no funciona. Soloimport {Observable} from 'rxjs/Rx';
funciona. La versión es 5.4.2Observable_1.Observable.of(...).delay(...).timeout is not a function
. Noimport 'rxjs/add/operator/timeout'
Estoy usando Angular 5.2 y RxJS 5.5.6
Este código no funcionó:
El siguiente código funcionó:
Método de llamada:
Creo que podrían mover / cambiar la funcionalidad () en RxJS 5.5.2
fuente
Esto debería funcionar correctamente, solo pruébalo.
fuente
fuente
¿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:
fuente
RxJS 6
Al actualizar a la versión 6 de la
RxJS
biblioteca y no usar elrxjs-compat
paquete, el siguiente códigotiene que ser cambiado a
fuente
Para mí (Angular 5 y RxJS 5) la importación de autocompletar sugirió:
mientras que debería ser (con todos los operadores estáticas
from
,of
, ect funciona bien:fuente
Tuve este problema hoy. Estoy usando systemjs para cargar las dependencias.
Estaba cargando los Rxjs así:
En lugar de usar rutas, use esto:
Este pequeño cambio en la forma en que systemjs carga la biblioteca solucionó mi problema.
fuente
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 sonimport {<something>} from 'rxjs';
hace una gran importación, así que es mejor evitarlo.fuente
muestra un requisito de rxjs-compat
No tenía esto instalado. Instalado por
y volver a ejecutar solucionó mi problema.
fuente
En
rxjs
v6, elof
operador debe importarse comoimport { of } from 'rxjs';
fuente
De alguna manera, incluso Webstorm lo hizo así
import {of} from 'rxjs/observable/of';
y todo comenzó a funcionarfuente