2017-02-09 6 views
0

Im создание приложения, использующего токены jwt. есть еще несколько маршрутов, которые им не нужны, но для большинства вызовов требуется токен. Поэтому я хотел расширить класс http и добавить свои собственные заголовки. Я все еще хочу использовать оригинальный класс http для обычных вызовов. Я читал онлайн (и о stackoverflow) об этом. Но в течение некоторого reasong я получаю следующее сообщение об ошибке:Расширение класса http для пользовательского использования ionic2/Angular2, вызывающего ошибку

EXCEPTION: Error in :0:0 caused by: No provider for ConnectionBackend! 

мое приложение модуль выглядит следующим образом:

@NgModule({ 
    declarations: [ 
     MyApp, 
     DashboardPage, 
    ], 
    imports: [ 
     IonicModule.forRoot(MyApp) 
    ], 
    bootstrap: [IonicApp], 
    entryComponents: [ 
     MyApp, 
     DashboardPage, 
    ], 
    providers: [ 
     { 
      provide: [Http,SecureHttpService], 
      deps: [XHRBackend, RequestOptions], 
      useFactory: (backend: XHRBackend, defaultOptions: RequestOptions) => { 
       return new SecureHttpService(backend, defaultOptions); 
      }, 
      useClass: SecureHttpService 
     }, 
     { 
      provide: ErrorHandler, 
      useClass: IonicErrorHandler, 
     }, 
     SecureHttpService 
    ] 
}) 
export class AppModule {} 

служба продлить выглядит как этот

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

@Injectable() 
export class SecureHttpService extends Http { 

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

и я хочу использовать его в другом сервисе:

constructor (private http: Http, private secureHttp: SecureHttpService) {} 

Я также попытался использовать обеспечить как это (без HTTP):

provide: SecureHttpService, 

, но все, что я стараюсь результаты в одной и той же ошибки. Я не получаю эту ошибку и почему ее происходит.

+0

'{ обеспечивают: [Http, SecureHttpService], Deps: [XHRBackend, RequestOptions], useFactory: (бэкенд: XHRBackend, defaultOptions: RequestOptions) => { вернуть новый SecureHttpService (бэкэнд, defaultOptions); }, useClass: SecureHttpService } 'Я не уверен, но нормально ли использовать методы useFactory и useClass? – Nikolai

ответ

0

после некоторой отладки пилы, которую я добавлял SecureHttpService 2 раза в качестве поставщика. поэтому возникла ошибка, потому что во второй раз я предоставляю «SecureHttpService» зависимости и т. д., не существует .... моя ошибка. так что просто удалить его, и он будет работать