Tengo un problema con un servicio dentro de mi aplicación. El problema es que dondequiera que se inyecte este servicio, recibo el siguiente error:
Uncaught (in promise): Error: Can't resolve all parameters for TestComponent: ([object Object], ?, [object Object])
Sé que este problema podría deberse al uso de barriles; sin embargo, no estoy usando barriles para servicios, sino que hago referencia al archivo "directamente", por ejemplo: ../../core/services/config.service
.
Como se sugiere en esta respuesta , traté de usar @Inject(forwardRef(...))
dondequiera que se inyecte este servicio. La única excepción que tengo es AppComponent
donde, en este caso, estoy inyectando el mismo servicio "normalmente" y no recibo ningún error:
export class AppComponent implements OnInit { constructor( private configService: ConfigService, // NO ERROR private router: Router ) { } ... }
En todos los demás lugares, si no hago algo como lo siguiente, obtengo el error descrito anteriormente:
export class BuyButtonComponent { constructor( @Inject(forwardRef(() => ConfigService)) private configService: ConfigService, // private configService: ConfigService // DOES NOT WORK ) { } ... }
Tengo entendido que forwardRef()
se usa cuando la dependencia se va a inyectar pero aún no se ha definido. El ConfigService
se proporciona desde un CoreModule
que se importa en el AppModule
. Los componentes están en un SharedModule
o en un FeatureModule
que tengo.
No estoy seguro de si alguien puede arrojar algo de luz sobre por qué este servicio en particular requiere forwardRef
en cualquier componente ( AppComponent
), mientras que todos los demás servicios que se importan y proporcionan de la misma manera se inyectan de la "manera normal".
Actualizar
Así es como se está brindando el servicio:
Módulo principal
@NgModule({ providers: [ // Other Services... ConfigService ] }) export class CoreModule { }
módulo de aplicación
@NgModule({ bootstrap: [AppComponent], imports: [ BrowserModule, FormsModule, HttpModule, BrowserAnimationsModule, CoreModule, AppRoutingModule ] }) export class AppModule { }
El ConfigService
se proporciona desde CoreModule
y desde ningún otro lugar. Además CoreModule
solo se importa en AppModule
. La idea es que los servicios se brinden desde un solo módulo. El servicio se está utilizando en componentes que se declaran en otros módulos ( SharedModule
y FeatureModule
).