Eu acabei de dominar Promessas agora estou aprendendo Observables! Ugh!
Apenas tentando fazer um simples pedido com o Angular 4. Seguindo vagamente este tutorial: https://scotch.io/tutorials/angular-2-http-requests-with-observables.
Inicialmente, quando tentei importar Observable
a partir de rxjs/Observable
Eu tenho um erro de compilação dizendo essencialmente que o mapa não era uma função de Observable<Response>
, mas mudando a importação para apenas rxjs
resolveu o erro de compilação. Mas agora eu recebo o mesmo erro em tempo de execução ...
O que há de errado em como eu estou lidando com a resposta abaixo?
import { Injectable } from "@angular/core";
import { apiConfig } from "../../environments/environment";
import { Http, Response, Headers, RequestOptions } from "@angular/http";
import { APIRequest, APIResponse} from "./api-objects";
import { Observable } from "rxjs";
/**
* The BaseAPIService can be extended to provide base functionality for communicating to the API endpoint.
*/
@Injectable()
export class BaseAPIService {
private apiBase = apiConfig.base;
constructor(protected http: Http) { }
/**
* Sends an API request to the endpoint
*/
sendRequest(request: APIRequest): Observable<APIResponse> {
const options = new RequestOptions({ });
const fullUrl = `apiBase${request.url}`;
request.body = request.body || {};
return this.http.get(fullUrl).map((response: Response) => new APIResponse(response));
}
}
** Detalhes do erro **
this.http.get(...).map is not a function
at CoreAPIService.webpackJsonp.356.BaseAPIService.sendRequest (base-api.service.ts:25)
Respostas:
0 para resposta № 1Você também precisará importar qualquer operador RxJS que planeja usar. Você pode fazer isso no nível do módulo.
Exemplos:
import "rxjs/add/operator/map";
import "rxjs/add/operator/catch";
import "rxjs/add/operator/switchMap";