You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 17.3.5升级后出现NgbDropdown无提供者错误求助

解决Angular 17.3.5 + NgBootstrap 16.0.0 中NgbDropdown的NullInjectorError问题

问题根源

你在AppModule的providers数组中错误注册了NgbDropdown。NgbDropdown是指令而非服务,不需要添加到providers里——NgbDropdownModule已经导出了所有下拉相关的指令,只需确保模块导入正确即可。

修复步骤

  1. 移除providers中的NgbDropdown条目
    修改后的AppModule配置如下:
    import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'
    import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'
    
    @NgModule({
      imports: [NgbDropdownModule, ...], // 保留NgbDropdownModule的导入
      providers: [...], // 移除其中的NgbDropdown
      bootstrap: [AppComponent],
      schemas: [CUSTOM_ELEMENTS_SCHEMA],
    })
    export class AppModule { }
    
  2. 检查懒加载模块(如果有)
    如果你的项目使用懒加载模块,需要在每个使用ngbDropdown组件的懒加载模块中单独导入NgbDropdownModule。

补充说明

Angular 17对依赖注入的校验更加严格,这导致之前Angular 15中未暴露的配置错误现在被触发。NgBootstrap的组件/指令始终是通过模块导入的方式提供,而非注册到providers中,遵循这个规范即可解决问题。

内容的提问来源于stack exchange,提问作者thuleduy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 09:30:21