将服务导入另一个服务时出现循环依赖错误

cyclic dependency error when importing service into another service

我正在尝试使用 Angular 提供的 DefaultRequestOptions class 为我的 http 请求设置默认值 headers 2. 可以在此处找到文档:https://angular.io/docs/ts/latest/guide/server-communication.html#!#override-default-request-options

我想添加一个默认的不记名令牌,它在我的一项服务中设置,但这样做会在我的浏览器控制台中出现以下错误:

Unhandled Promise rejection: Provider parse errors: Cannot instantiate cyclic dependency! Http: in NgModule AppModule in ./AppModule ; Zone: ; Task: Promise.then ; Value:

这是我的 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 ]
})

我做错了什么?

假设有 3 个服务..

服务 1、服务 2、服务 3

  • 服务 1 导入服务 2
  • 服务 2 导入服务 3
  • 服务 3 导入服务 1

服务 1 尝试导入 2,服务 2 尝试导入 3,服务 3 尝试导入 1,这样一直持续下去。这是一个循环依赖。

打破循环来修复它。