2016-06-20 10 views
5

は私の中に同じコードを持っているいくつかのサービス、ありますTypeScriptでクラスを拡張するには?

constructor (private http: Http) { 
    //use XHR object 
    let _build = (<any> http)._backend._browserXHR.build; 
    (<any> http)._backend._browserXHR.build =() => { 
     let _xhr = _build(); 
     _xhr.withCredentials = true; 
     return _xhr; 
    }; 
} 

は、私は別のファイルにコードhttp_base_clas.tsを移動するとpossible.Hereな限り多くのコードを再利用したかったのですhttp_base_clas.ts:

import {Http} from '@angular/http'; 

export class HttpBaseClass { 
    constructor (http: Http) { 
     //use XHR object 
     let _build = (<any> http)._backend._browserXHR.build; 
     (<any> http)._backend._browserXHR.build =() => { 
      let _xhr = _build(); 
      _xhr.withCredentials = true; 
      return _xhr; 
     }; 
    } 
} 

どのようにhttp_base_classをauth_service.tsに拡張しますか?

import {Injectable} from '@angular/core'; 
import {Http, Response} from '@angular/http'; 
import {Headers, RequestOptions} from '@angular/http'; 
import {Observable} from 'rxjs/Observable'; 

@Injectable() 

export class AuthenticationService { 
result: { 
    ok: boolean; 
}; 
private verifyUrl = 'http:example.com; 

constructor (private http: Http) { 

} 
private authRequest (url) { 
    let body = JSON.stringify({}); 
    let headers = new Headers({ 'Content-Type': 'application/json'}); 
    let options = new RequestOptions({ 
     headers: headers 
    }); 
    return this.http.post(url, body, options) 
     .map((res: Response) => res.json()) 
     .map(res => { 
      this.result = res; 
      return this.result.ok; 
     }); 
    } 
} 

答えて

6
class AuthenticationService extends HttpBaseClass { 
    constructor(http:Http) { 
    super(http); 
    } 

    private authRequest (url) { 
    ... 
    } 
} 
+0

助けてくれてありがとう。 – Serhiy

+1

あなたの名前はすべての角度の質問にあり、あなたの答えは決して失望しません。ありがとうございました! –

+1

@HerbiShtiniありがとうございます。私の答えを聞いてうれしいです:) –

関連する問題