2016-08-07 22 views
0

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

+0

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? –

+0

@JBNizet Es ist mir nicht so wichtig, denn so oder so wirft es immer noch diesen Fehler – silverAndroid

Antwort

0

helfen würde, stellte sich heraus, es war etwas seltsam Kompilierungsfehler (nicht sicher, ob TypeScript oder Angular 2 Fehler) wo eine der Klassen immer noch den Verweis auf HTTPConnection hatte, obwohl es nicht war darin benutzt.