2017-02-17 2 views
1

Я пытаюсь установить заголовки по умолчанию для моих запросов HTTP, используя класс DefaultRequestOptions предоставленного угловыми 2. Документация может быть найден здесь: https://angular.io/docs/ts/latest/guide/server-communication.html#!#override-default-request-optionsошибка циклической зависимости при импорте службы в другую службу

Я хочу добавить по умолчанию податель маркер, который получает в одном из своих услуг, но при этом дает мне следующую ошибку в моем браузере консоли:

Unhandled Promise отказ: ошибки поставщика синтаксического анализа: Невозможно создать циклическую зависимость! Http: в NgModule AppModule в ./AppModule; Зона: ; Задача: Promise.then; Значение:

Вот мои по умолчанию-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

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 услуги ..

Service1, Service2, service3

  • Service1 импортирует Service2
  • Service2 импортирует service3
  • service3 импортирует Service1

Service1 пытается импортировать 2 , 2 пытается импортировать 3, 3 пытается импортировать 1, и это продолжается навсегда. Это циклическая зависимость.

Разбейте петлю, чтобы исправить ее.

Смежные вопросы