page angular typescript

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); } }