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
, но я не уверен, что могу использовать его в этом контексте.
Заранее благодарим за ваш ответ.
Ответы
Ответ 1
DI не может разрешать циклические зависимости. Обходной путь заключается в том, чтобы ввести инжектор и получить экземпляр императивно:
@Injectable()
class ConfigService {
private http: Http;
constructor(injector:Injector) {
setTimeout(() => this.http = injector.get(Http);
}
}