2017-02-17 30 views
1

我正在嘗試設置默認頭使用由角2.文檔中提供的DefaultRequestOptions類我的http請求可以在這裏找到:https://angular.io/docs/ts/latest/guide/server-communication.html#!#override-default-request-options循環依賴錯誤導入服務到另一個服務時

我想添加一個默認承載令牌,這在我服務的一個獲取設置,但這樣做給了我下面的錯誤在我的瀏覽器控制檯:

未處理的承諾拒絕:提供解析錯誤:無法實例 循環依賴! Http:在./AppModule中的NgModule AppModule中;區域: ;任務:Promise.then;價值:

這裏是我的默認請求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

http://stackoverflow.com/questions/40860202/di-with-cyclic-dependency-with-custom-http-and-configservice/40860233#40860233,http://stackoverflow.com/questions/41225627/custom -service-in-extended-http-not-getting-injected/41226493#41226493,http://stackoverflow.com/questions/39286983/how-to-override-http-class-in-rc6/39287030#39287030 –

+0

I我面臨同樣的問題。你找到解決方案嗎? –

回答

1

試想3個服務..

服務1,服務2,服務3

  • 服務1進口客服2
  • 服務2進口服務3
  • 服務3進口服務1

服務1嘗試導入2 ,2次嘗試導入3次,3次嘗試導入1次,並且這會一直持續。這是一個循環依賴。

打破循環來修復它。