Ich habe eine Elternklasse, HTTPConnection
, die ich als Netzwerk-Util-Klasse verwenden möchte, um Code-Wiederholung zu reduzieren, aber wenn ich versuche, es zu verwenden, core.umd.js
sagt Uncaught ReferenceError: HTTPConnection is not defined
aber es ist definiert, was mich verwirrt.Elternklasse ist nicht definiert
Meine HTTPConnection
Klasse:
import {Response, RequestOptionsArgs, Headers} from "@angular/http";
import {Observable} from "rxjs/Observable";
export class HTTPConnection {
protected static addAuthorizationHeader(token: string, reqOptionsArgs?: RequestOptionsArgs): RequestOptionsArgs {
if (reqOptionsArgs) {
reqOptionsArgs.headers.append('Authorization', token);
return reqOptionsArgs;
}
var headers = new Headers();
headers.append('Authorization', token);
return {headers: headers};
}
//Copied from the Angular 2 Developer Guide - HTTP Client
protected static extractData(res: Response) {
return res.json || {};
}
protected static handleError (error: any) {
// In a real world app, we might use a remote logging infrastructure
// We'd also dig deeper into the error to get a better message
let errMsg = "Error: " + (error.message) ? error.message : error.status ? `${error.status} - ${error.statusText}` : 'Server error';
console.error(errMsg); // log to console instead
return Observable.throw(errMsg);
}
}
Der Service, den sie sich:
import {Injectable} from "@angular/core";
import {Observable} from "rxjs/Observable";
import {Http, Response} from "@angular/http";
import {HTTPConnection} from "./http.connection";
import 'rxjs/add/operator/map';
@Injectable()
export class CoursesService extends HTTPConnection {
private token: string = "pew";
constructor(private _http: Http) {
super();
}
getCourses(): Observable<Response> {
return this._http.get('https://httpbin.org/get', HTTPConnection.addAuthorizationHeader(this.token))
.map(HTTPConnection.extractData)
.catch(HTTPConnection.handleError);
}
}
Ich würde es wirklich zu schätzen, wenn jemand mir mit diesem
Keine Antwort, aber warum verwenden Sie die Vererbung, und damit jeden Benutzer von HTTPConnection zwingen, es und nichts anderes zu erweitern, nur um statische Dienstprogrammfunktionen bereitzustellen. Warum definieren Sie nicht einfach eine Klasse mit öffentlichen statischen Funktionen oder auch nur Top-Level-Funktionen? –
@JBNizet Es ist mir nicht so wichtig, denn so oder so wirft es immer noch diesen Fehler – silverAndroid