Подтвердить что ты не робот

DI с циклической зависимостью от пользовательских HTTP и ConfigService

Я пытаюсь реализовать ConfigService для получения правильной конфигурации для правильной среды в проекте. Я в настоящее время сталкиваюсь с циклической зависимостью

(index):28 Error: (SystemJS) Provider parse errors:
    Cannot instantiate cyclic dependency! Http: in NgModule AppModule
    Error: Provider parse errors:

Я изучил код и есть проблема, на мой взгляд:

CustomHttp

constructor(backend: XHRBackend, options: RequestOptions, public spinnerService: SpinnerService, public exceptionService: ExceptionService, public configService: ConfigService) 

ExceptionService

constructor(private _notificationService: NotificationService, private _spinnerService: SpinnerService, private _configService: ConfigService, private _router: Router)

ConfigService

constructor(private http: Http) {}

Как вы можете видеть, у меня есть циклические зависимости, показанные на этой диаграмме (без какого-либо хорошего соглашения):

введите описание изображения здесь

Теперь мой вопрос, как его исправить? Я слышал о Injector, но я не уверен, что могу использовать его в этом контексте.

Заранее благодарим за ваш ответ.

4b9b3361

Ответ 1

DI не может разрешать циклические зависимости. Обходной путь заключается в том, чтобы ввести инжектор и получить экземпляр императивно:

@Injectable()
class ConfigService {
  private http: Http;
  constructor(injector:Injector) {
    setTimeout(() => this.http = injector.get(Http);
  }
}