2016-08-07 4 views
0

親クラスがHTTPConnectionです。これはネットワークのutilクラスとしてコードの繰り返しを減らすために使用しますが、私が使用しようとするとcore.umd.jsUncaught ReferenceError: HTTPConnection is not definedと表示されますが、混乱します。親クラスが定義されていません

マイHTTPConnectionクラス:

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

それを拡張サービス:

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

誰かがこの

+0

答えはありませんが、なぜ継承を使用するのですか?なぜなら、静的ユーティリティ関数を提供するために、HTTPConnectionのすべてのユーザーがそれを拡張するように強制します。単に静的な静的関数、あるいはトップレベルのユーティリティ関数を使ってクラスを定義するだけではどうですか? –

+0

@JBNizetそれはそれほど重要なことではありません – silverAndroid

答えて

0

それはいくつか変だったが判明して私を助けるならば、私はそれを本当に感謝コンパイルエラー(TypeScriptまたはAngular 2エラーの場合はわかりません)、クラスの1つが依然としてHTTPConnectionへの参照を持っていたにもかかわらずそれに使用されます。

関連する問題