ngx-bootstrap 7: BsDropdownModule 错误 TS2554: 需要 0 个参数,但得到 1 个

ngx-bootstrap 7: BsDropdownModule error TS2554: Expected 0 arguments, but got 1

在我的 Angular 应用程序中,我使用 ngx-bootstrap 版本 6.x,当我尝试更新到 7.x 时,我收到以下错误:

Error: Error: src/app/app.module.ts:41:30 - error TS2554: Expected 0 arguments, but got 1.

41     BsDropdownModule.forRoot({ isAnimated: false, autoClose: true }),

我应该如何为版本 7.x 中的 BsDropdownModule 设置配置?

根据 BsDropdownModuleforRoot() 没有参数。

因此,您必须BsDropdownModule.forRoot()中删除参数。

要覆盖默认的 BsDropdownState 值,您必须为 AppModuleComponent.

注入 BsDropdownConfigproviders
import { BsDropdownConfig, BsDropdownModule } from 'ngx-bootstrap/dropdown';

export const BS_DROPDOWN_CUSTOM = {
  isAnimated: false,
  autoClose: true
};

@NgModule({
  imports: [
    BsDropdownModule.forRoot()
  ],
  providers: [
    {
      provide: BsDropdownConfig,
      useValue: BS_DROPDOWN_CUSTOM
    }
  ]
})
export class AppModule {}

Sample Solution on StackBlitz


注意:您可能不需要将 BsDropdownConfig 注入 providers,因为默认值 (BsDropdownState) 与您的相同提供的配置。

bs-dropdown.module.ts

export class BsDropdownModule {
  static forRoot(): ModuleWithProviders<BsDropdownModule> {
    return {
      ngModule: BsDropdownModule,
      providers: [
        ComponentLoaderFactory,
        PositioningService,
        BsDropdownState
      ]
    };
  }
}

bs-dropdown.state.ts

export class BsDropdownState {
  direction: 'down' | 'up' = 'down';
  autoClose = true;
  insideClick = false;
  isAnimated = false;

  ...
}