Angular 17.3.5升级后出现NgbDropdown无提供者错误求助
解决Angular 17.3.5 + NgBootstrap 16.0.0 中NgbDropdown的NullInjectorError问题
问题根源
你在AppModule的providers数组中错误注册了NgbDropdown。NgbDropdown是指令而非服务,不需要添加到providers里——NgbDropdownModule已经导出了所有下拉相关的指令,只需确保模块导入正确即可。
修复步骤
- 移除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 { } - 检查懒加载模块(如果有)
如果你的项目使用懒加载模块,需要在每个使用ngbDropdown组件的懒加载模块中单独导入NgbDropdownModule。
补充说明
Angular 17对依赖注入的校验更加严格,这导致之前Angular 15中未暴露的配置错误现在被触发。NgBootstrap的组件/指令始终是通过模块导入的方式提供,而非注册到providers中,遵循这个规范即可解决问题。
内容的提问来源于stack exchange,提问作者thuleduy
相关产品推荐
相关产品推荐

