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 ).