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