扩展 http 类以自定义使用 ionic2/Angular2 导致错误

问题描述 投票:0回答:1

我正在构建一个使用 jwt 令牌的应用程序。仍有一些路由不需要它们,但大多数调用都需要令牌。所以我想扩展 http 类并添加我的自定义标头。我仍然想使用原始的 http 类进行正常调用。我在网上(以及 stackoverflow)上阅读了有关此内容的内容。但由于某种原因,我收到以下错误:

异常::0:0 中的错误由以下原因引起:没有 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,

但我尝试的一切都会导致同样的错误。我不明白这个错误以及为什么会发生。

angular ionic2 angular2-services
1个回答
0
投票

经过一些调试后,我发现我将 SecureHttpService 添加了 2 次作为提供程序。所以错误出现是因为我第二次提供“SecureHttpService”时,依赖项等不存在......我的错误。所以只要删除它,它就会起作用

© www.soinside.com 2019 - 2024. All rights reserved.