我尝试使用Angular 2提供的DefaultRequestOptions类为我的http请求设置默认标头。可以在此处找到文档:https://angular.io/docs/ts/latest/guide/server-communication.html#!#override-default-request-options
我想添加一个默认的承载令牌,它在我的一个服务中设置,但这样做会在浏览器控制台中出现以下错误:
未处理的Promise拒绝:提供程序解析错误:无法实例化 循环依赖! Http:在./AppModule中的NgModule AppModule中;区: ;任务:Promise.then;值:
这是我的 default-request-options.service.ts 文件:
import { Injectable } from '@angular/core';
import { BaseRequestOptions, RequestOptions } from '@angular/http';
import { UserService } from './user.service';
@Injectable()
export class DefaultRequestOptions extends BaseRequestOptions {
constructor(private userService: UserService) {
super();
// Set the default 'Content-Type' header
this.headers.set('Content-Type', 'application/json');
this.headers.set('Accept', 'application/json');
this.headers.set('Authorization', 'Bearer ' + this.userService.idToken);
}
}
export const requestOptionsProvider = { provide: RequestOptions, useClass: DefaultRequestOptions };
以下是 app.module.ts 文件中的相关代码:
import { requestOptionsProvider } from './default-request-options.service';
import { UserService } from './user.service';
@NgModule({
imports: [
...
],
declarations: [
...
],
providers: [
...
requestOptionsProvider,
UserService
],
bootstrap: [ AppComponent ]
})
我做错了什么?
答案 0 :(得分:1)
想象一下3项服务..
Service1,Service2,Service3
Service1尝试导入2,2尝试导入3,3尝试导入1并且这将永远继续。这是一种循环依赖。
打破循环以修复它。