4

我的应用程序中的一项服务存在问题。问题是,无论在何处注入此服务,我都会收到以下错误:

Uncaught (in promise): Error: Can't resolve all parameters for TestComponent: ([object Object], ?, [object Object])

我知道这个问题可能是由于使用了桶而引起的,但是我没有将桶用于服务,而是“直接”引用文件,例如:../../core/services/config.service.

正如this answer中所建议的,我尝试@Inject(forwardRef(...))在注入此服务的任何地方使用。我唯一的例外是AppComponent在这种情况下我“正常”注入相同的服务并且我没有收到错误:

export class AppComponent implements OnInit {
    constructor(
        private configService: ConfigService, // NO ERROR
        private router: Router
    ) { }

    ...

}

在所有其他地方,如果我不执行以下操作,则会收到上述错误:

export class BuyButtonComponent {
    constructor(
        @Inject(forwardRef(() => ConfigService)) private configService: ConfigService,
        // private configService: ConfigService // DOES NOT WORK
    ) { }

    ...

}

我的理解forwardRef()是在要注入但尚未定义的依赖项时使用。ConfigService是从CoreModule中导入的a提供的AppModule。组件在我拥有的 aSharedModule或 aFeatureModule中。

不确定是否有人可以阐明为什么此特定服务需要forwardRef在任何组件中(除AppComponent),而以相同方式导入和提供的所有其他服务都以“正常方式”注入。

更新

以下是提供服务的方式:

核心模块

@NgModule({
    providers: [
        // Other Services...
        ConfigService
    ]
})
export class CoreModule { }

应用模块

@NgModule({
    bootstrap: [AppComponent],
    imports: [
        BrowserModule,
        FormsModule,
        HttpModule,
        BrowserAnimationsModule,
        CoreModule,
        AppRoutingModule
    ]
})
export class AppModule { }

ConfigService是从那里提供的,CoreModule没有其他地方提供。也CoreModule仅在AppModule. 这个想法是从单个模块提供服务。该服务用于在其他模块(SharedModule和 a FeatureModule)中声明的组件中。

4

0 回答 0