angular - page - ng-attr-title
DI con dependencia cĂclica con HTTP personalizado y ConfigService (1)
Estoy tratando de implementar un ConfigService para recuperar la configuración correcta para el entorno correcto en el proyecto. Actualmente me encuentro con una dependencia cíclica
(index):28 Error: (SystemJS) Provider parse errors:
Cannot instantiate cyclic dependency! Http: in NgModule AppModule
Error: Provider parse errors:
He explorado el código y está el problema, en mi opinión:
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) {}
Como puede ver, tengo una dependencia cíclica ilustrada en este diagrama (sin ninguna buena convención):
Mi pregunta ahora es, ¿cómo solucionarlo?
He oído hablar de
Injector
pero no estoy seguro de poder usarlo realmente en este contexto.
Gracias de antemano por su respuesta.
DI no puede resolver dependencias cíclicas. Una solución alternativa es inyectar el inyector y adquirir la instancia de manera imperativa:
@Injectable()
class ConfigService {
private http: Http;
constructor(injector:Injector) {
setTimeout(() => this.http = injector.get(Http);
}
}