2016-09-02 10 views
6

mam CustomHttp klasę i używam go dodać nagłówki do moich get wniosków:Jak zastąpić klasę Http w RC6?

import { Injectable } from '@angular/core'; 
import { Observable } from 'rxjs/Rx'; 
import { RequestOptionsArgs, RequestOptions, ConnectionBackend, Http, Request, Response, Headers } from "@angular/http"; 

@Injectable() 
export class CustomHttp extends Http { 

headers: Headers = new Headers({ 'Something': 'Something' }); 
options1: RequestOptions = new RequestOptions({ headers: this.headers }); 

constructor(backend: ConnectionBackend, 
    defaultOptions: RequestOptions) { 
    super(backend, defaultOptions); 
} 

get(url: string, options?: RequestOptionsArgs) { 
    console.log('Custom get...'); 
    return super.get(url, this.options1).catch(err => { 
     console.log(err); 
     if (err.status === 404) { 
      console.log('404 error'); 
      return Observable.throw(err); 
     } 
    }); 
    } 
} 

W RC5, dodałem go do moich AppModule dostawców tak:

provide (Http, { 
      useFactory: (
       backend: XHRBackend, 
       defaultOptions: RequestOptions) => 
       new CustomHttp(backend, defaultOptions), 
      deps: [XHRBackend, RequestOptions] 
     }) 

Ale, RC6, provide z @angular/core jest przestarzałe i mam problem z dodaniem mojej klasy CustomHttp do dostawców AppModule. Czy ktoś ma pomysł, jak to zrobić?

Odpowiedz

6

Składnia ma zmienić trochę, poza tym, że powinien on nadal działa tak samo:

{ provide: Http, 
     useFactory: (
      backend: XHRBackend, 
      defaultOptions: RequestOptions) => 
      new CustomHttp(backend, defaultOptions), 
     deps: [XHRBackend, RequestOptions] 
    } 
+0

Tak, to jest to! Teraz, zamiast importować 'provide' z' @ angle/core', musisz zaimportować 'Provider'. Kolejną rzeczą, która zmieniła się w RC6, jest to, że nie musisz importować 'ConnectionBackend' z' @ angle/http' i dodawać go do dostawców modułów. Wielkie dzięki! –

+0

Dlaczego chcesz importować 'Provider'? Nie sądzę, żeby tak było. –

+0

Tak, masz rację, moje złe. Usunięto go i nadal działa jak urok. Miałem go zaimportowane wcześniej, gdy próbowałem to naprawić, więc pomyślałem, że to konieczne. –