gpt4 book ai didi

angular - 使用 Angular 2 的 Http 的替代类提供程序

转载 作者:太空狗 更新时间:2023-10-29 18:34:45 25 4
gpt4 key购买 nike

我正在尝试为 Angular 2 中的 Http 使用替代类。

我想这样做是为了让 CustomHttp 类在构造函数中设置默认选项

import {Injectable} from 'angular2/core';
import {Http, RequestOptions, ConnectionBackend} from 'angular2/http';

@Injectable()
export class CustomHttp extends Http {
constructor(_backend: ConnectionBackend, _defaultOptions: RequestOptions) {
super(_backend, _defaultOptions);
let jwtHeader = localStorage.getItem('jwt');
if (jwtHeader != null) {
this._defaultOptions.headers.append('Authorization', jwtHeader);
}
console.log("Pouet CustomHttp");
}
}

我在引导时尝试了各种选项,因为我希望这个重载对我的应用程序是全局的。

我试过了:

bootstrap(AppComponent, 
[HTTP_PROVIDERS,
ROUTER_PROVIDERS,
provide(Http, {useClass: CustomHttp,deps: [XHRBackend, BaseRequestOptions]})
]);

它提高了:

browser_adapter.ts:73 EXCEPTION: No provider for ConnectionBackend! (TAPComponent -> SensService -> Http -> ConnectionBackend)

我也试过:

bootstrap(AppComponent, 
[HTTP_PROVIDERS,
ROUTER_PROVIDERS,
provide(Http, {useFactory:
function(backend, defaultOptions) {
return new CustomHttp(backend, defaultOptions);
},
deps: [XHRBackend, BaseRequestOptions]})
]);

它提高了:

browser_adapter.ts:73 EXCEPTION: No provider for BaseRequestOptions! (TAPComponent -> SensService -> Http -> BaseRequestOptions)

我该怎么办?

我正在使用测试版 9。

最佳答案

你需要使用一个工厂来配置它 RequestOptions 而不是 BaseRequestOptions:

bootstrap(AppComponent, [HTTP_PROVIDERS,
new Provider(Http, {
useFactory: (backend: XHRBackend, defaultOptions: RequestOptions) => new CustomHttp(backend, defaultOptions),
deps: [XHRBackend, RequestOptions]
})
]);

HTTP_PROVIDERS 仅提供 RequestOptions 而不是 BaseRequestOptions

BaseRequestOptions 如果您想通过定义它的子类来定义自定义请求选项,则应使用。

关于angular - 使用 Angular 2 的 Http 的替代类提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36089412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com