DI с циклической зависимостью от пользовательских HTTP и ConfigService
Я пытаюсь реализовать ConfigService для получения правильной конфигурации для правильной среды в проекте. В настоящее время я сталкиваюсь с циклической зависимостью
(index):28 Error: (SystemJS) Provider parse errors: Cannot instantiate cyclic dependency! Http: in NgModule AppModule Error: Provider parse errors:
Я изучил код, и есть проблема, на мой взгляд:
CustomHttp
- Угловой 2 конструктор компонентов Vs OnInit
- Угловой 2.0 и модальный диалог
- Должен ли я писать методы как функции стрелок в classе Углового
- Угловой 2 Используйте компонент из другого модуля
- Что такое эквивалент httpinterceptor в угловом2?
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
но я не уверен, что могу использовать его в этом контексте.
Заранее благодарю за ваш ответ.
- Угловое 2: Как обнаружить изменения в массиве? (свойство @input)
- Angular 2: Как вы визуализируете HTML из ответа JSON без отображения тегов пользователю?
- Создание и возrotation наблюдаемого из службы углового 2
- Прокси-сервер с угловым CLI для бэкэнд не работает
- rxjs / Subject.d.ts error: Class 'Subject ' неправильно расширяет базовый class 'Observable '
- Как использовать jQuery с угловым?
- Свойство 'map' не существует в типе 'Observable '
- Почему я получаю ошибку ... неожиданный запрос: GET / internalapi / quotes
DI не может разрешать циклические зависимости. Обходной путь заключается в том, чтобы вводить инжектор и приобретать экземпляр императивно:
@Injectable() class ConfigService { private http: Http; constructor(injector:Injector) { setTimeout(() => this.http = injector.get(Http); } }