javascript - observable_1 - rxjs observable fromevent is not a function
Error de Angular2 RxJS al error ''Observable_1.Observable.fromEvent no es una funciĆ³n'' (2)
¡Definitivamente no es necesario importar todos los operadores a la vez! Acabas de importar fromEvent
mal. Podrías hacerlo así:
import {Observable} from ''rxjs/Observable'';
import ''rxjs/add/observable/fromEvent'';
EDITAR: Además de lo que ya escribí: tree-shaking con AoT-Compiler de angular elimina el código no utilizado, en función de lo que importa. Si solo importa algunos objetos o funciones desde rxjs / rx, el compilador no puede eliminar nada. Importa siempre solo, lo que necesitas!
Estoy usando AngularJS 2 Beta 0 y estoy tratando de crear un RxJS Observable a partir de un evento en un objeto de ventana. Creo conocer la fórmula para capturar el evento como un Observable en mi servicio:
var observ = Observable.fromEvent(this.windowHandle, ''hashchange'');
El problema es que cada vez que intento ejecutar este código, aparece un error que indica que ''fromEvent'' no es una función.
Uncaught EXCEPTION: Error during evaluation of "click"
ORIGINAL EXCEPTION: TypeError: Observable_1.Observable.fromEvent is not a function
Esto parece implicar para mí que no estoy manejando mi import
correctamente ahora que RxJS no está incluido en la compilación de Angular 2, aunque el resto de mi aplicación funciona correctamente, lo que para mí significa que RxJS está donde se supone que debe estar. .
Mi importación en el servicio se ve así:
import {Observable} from ''rxjs/Observable'';
Aunque también intenté usar esto (con los cambios apropiados en el código), con los mismos resultados:
import {FromEventObservable} from ''rxjs/observable/fromEvent'';
Tengo la siguiente configuración en mi Index.html:
<script>
System.config({
map: {
rxjs: ''node_modules/rxjs''
},
packages: {
''app'': {defaultExtension: ''js''},
''rxjs'': {defaultExtension: ''js''}
}
});
System.import(''app/app'');
</script>
¿Alguien puede decirme lo que estoy haciendo incorrectamente?
El problema parecía ser que la declaración de importación debería verse así:
import {Observable} from ''rxjs/Rx'';
Tenga en cuenta que se está trayendo Observable
desde rxjs/Rx
lugar de desde rxjs/Observable
. Como menciona @EricMartinez , al utilizarlo de esta manera automaticamente obtendrá todos los operadores (como .map()
).