/ / wie man http bekommen Anfrage in Winkel 2 http Service mit Observablen - eckig

Wie man http bekommen Anfrage in Winkel 2 http Service mit Observablen - eckig

Ich bin gerade fertig mit Promises, jetzt lerne ich Observables! Ugh!

Versuchen Sie einfach eine einfache Anfrage mit Angular 4 zu machen. Folgen Sie diesem Tutorial: https://scotch.io/tutorials/angular-2-http-requests-with-observables.

Anfangs als ich versuchte zu importieren Observable von rxjs/Observable Ich habe einen Kompilierfehler bekommen, der im Wesentlichen besagt, dass map keine Funktion von war Observable<Response>, aber den Import in nur ändern rxjs hat den Kompilierfehler behoben. Aber jetzt bekomme ich den gleichen Fehler zur Laufzeit ...

Was ist falsch daran, wie ich die Antwort unten behandle?

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));
}
}

** Fehlerdetails **

this.http.get(...).map is not a function
at CoreAPIService.webpackJsonp.356.BaseAPIService.sendRequest (base-api.service.ts:25)

Antworten:

0 für die Antwort № 1

Sie müssen auch alle RxJS-Operatoren importieren, die Sie verwenden möchten. Dies können Sie auf Modulebene tun.

Beispiele:

import "rxjs/add/operator/map";
import "rxjs/add/operator/catch";
import "rxjs/add/operator/switchMap";