• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

246
Views
Angular 2 debe usar @Inject(forwardRef(...)) para que se inyecte el Servicio

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

about 3 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error