首页 > 解决方案 > Angular - 运行 forRoot 函数时出现问题

问题描述

我有一个奇怪的 TS 问题,我只是在从 Angular 5.x 升级到 7.x 后才开始遇到的。

对于下面的这段代码,特别是对 的forRoot调用LibCoreModule,我收到此错误:

错误类型 'ModuleWithProviders' 不可分配给类型 'any[] | 类型'。类型“ModuleWithProviders”不可分配给类型“类型”。“ModuleWithProviders”类型中缺少属性“应用”。

代码:

@NgModule({
  imports: [
    ...
  ],
  exports: [
    ...
  ]
})

export class LibCoreModule {

  public static forRoot(configFactory, deps = []): ModuleWithProviders {

    return {
      ngModule: LibCoreModule,
      providers: [
        {provide: CoreConfig, useFactory: configFactory, deps: deps}
      ]
    };
  }
}

export function coreFactory(): CoreConfig {

  return {
    api: environment.api
  };
}

@NgModule({
  declarations: [
    AppComponent,

    // SHOWS ERROR
    LibCoreModule.forRoot(coreFactory, [])
  ],
  imports: [
    BrowserModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})

我试图查看他们是否将任何内容从 v5 更改为 v7,但我没有发现任何特别的内容。

有谁知道如何解决这个问题?

标签: angulartypescript

解决方案


你应该LibCoreModule.forRoot(coreFactory, [])从属性declarations转移imports,我认为这可以解决你的问题,因为模块应该注入到导入属性中


推荐阅读