将服务导入另一个服务时出现循环依赖错误
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,这样一直持续下去。这是一个循环依赖。
打破循环来修复它。
我正在尝试使用 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,这样一直持续下去。这是一个循环依赖。
打破循环来修复它。