angular

meta tags angular 4



angular: respuesta del mapa HttpClient (3)

Aún puede, pero necesita importar el operador map() desde rxjs como este:

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

Y tendrás el operador map() .

(Véase también mi respuesta aquí: https://stackoverflow.com/a/48323851/348841 )

Actualmente estoy cambiando de http (@ angular / http) a HttpClient (@ angular / common / http) y tengo problemas para mapear mi respuesta a los objetos.

Código antiguo (estaba trabajando antes)

this.http.get(environment.baseUrl + ''/api/timeslots'') .map((response: Response) => { const data = response.json(); const timeslots = Array.of<Timeslot>(); for (const item of data) {...}

Nuevo código, pero error de compilación:

this.httpClient.get(environment.baseUrl + ''/api/timeslots'') .map((response: Response) => { const data = <Timeslot[]> response; const timeslots = Array.of<Timeslot>(); for (const item of data) {...}

¿Echo de menos un reparto? La respuesta es una matriz de ranuras de tiempo.


Desde Angular 6/7 ha habido un par de modificaciones a la implementación de la biblioteca RxJS dentro de Angular.

Por lo tanto, los operadores RxJS ahora están ubicados en ''rxjs / operator'' en lugar de ''rxjs / add / operator /: OperatorName''. Además, estos operadores ya no pueden ser encadenados directamente a la balanza de observación, sino que tienen que ser encadenados a través del método pipe ().

Entonces, la nueva forma de implementar esto debe verse así:

import {map} from ''rxjs/operators''; this.http.get(...) .pipe( map( response => { // TODO: Do Your Staff Here! } ) );

Por favor, consulte la documentación específica de Angular here para obtener más detalles. * Aquí estoy asumiendo que su componente HttpClient está disponible bajo this.http prop. this.http .


El valor predeterminado que devuelve el nuevo HttpClient es Object. Llama automáticamente response.json() internamente.

Puede decirle a HttpClient de qué tipo será la respuesta, así que:

this.httpClient.get<Timeslot[]>(...) .map((timeSlots) => { ...

donde el tipo de timeSlots será Timeslot[]

Ver más información sobre mecanografía en el nuevo HttpClient