我有几个服务,里面有相同的代码:
- 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并尽可能地重用代码.这里是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;
- });
- }
- }
- class AuthenticationService extends HttpBaseClass {
- constructor(http:Http) {
- super(http);
- }
- private authRequest (url) {
- ...
- }
- }