world versiones starter hello guide app typescript angular

typescript - versiones - Angular2 http falta la función.map



install angular (2)

Querrá que su index.html se vea así, para que system.js pueda encontrar todas las dependencias de rxjs que importa en sus componentes.

<script src="/lib/anguar2/angular2-polyfills.js"></script> <script src="/lib/es6-shim/es6-shim.js"></script> <script src="/lib/systemjs/system.src.js"></script> <script> System.config({ defaultJSExtensions: true, packages: { app: { format: ''register'' } }, map: { ''rxjs'':"lib/rxjs" } }); </script> <script src="/lib/anguar2/angular2.dev.js"></script> <script src="/lib/anguar2/router.dev.js"></script> <script src="/lib/anguar2/http.js"></script> <script> System.import(''app/boot''); </script>

Asegúrese de que la carpeta "lib / rxjs" tenga TODOS los archivos de la carpeta node_modules / rxjs. No se cargarán todos, solo los que necesita y sus dependencias (system.js lo resolverá).

Ahora puede usar esto en su archivo boot.ts:

import ''rxjs/add/operator/map'';

Encontré este código de ejemplo en un tutorial :

getRandomQuote() { this.http.get(''http://localhost:3001/api/random-quote'') .map(res => res.text()) .subscribe( data => this.randomQuote = data, err => this.logError(err), () => console.log(''Random Quote Complete'') ); }

Pero cuando trato de usarlo, solo obtengo TypeError: this.http.get(...).map is not a function in [null] :

getChannels():Promise<Channel> { return this.http.get(''...'') .map(function (response:Response) { ... }).toPromise(); }

Mi compilador de Typescript me dice que esos métodos están disponibles, pero al inspeccionar el valor de retorno de http.get() faltan.

Utilicé el paquete.json de la guía de inicio actual de angualar2:

"dependencies": { "angular2": "2.0.0-beta.0", "systemjs": "0.19.6", "es6-promise": "^3.0.2", "es6-shim": "^0.33.3", "reflect-metadata": "0.1.2", "rxjs": "5.0.0-beta.0", "zone.js": "0.5.10" },

...

<script src="node_modules/angular2/bundles/angular2.dev.js"></script> <script src="node_modules/angular2/bundles/http.dev.js"></script>

¿Alguna idea de lo que podría equivocarme en este momento?


Observable por defecto viene con solo unos pocos operadores. Tienes que importarlos explícitamente:

import ''rxjs/add/operator/map'';

o, si no quieres pensar en eso, simplemente carga todo (en tu archivo bootstrap, por ejemplo):

import ''rxjs/Rx'';