R3InjectorError 没有 NgbDropdown 的提供者

R3InjectorError No provider for NgbDropdown

我有一个共享模块 A,我在其中导入和导出 NgbDropdownModule

import { ... NgbDatepickerModule, NgbDropdownModule, NgbModalModule ...} from '@ng-bootstrap/ng-bootstrap';

imports: [...NgbDropdownModule...]

exports: [...NgbDropdownModule...]

在模块 B 中,我只导入模块 A,直到 Angular 9 一切正常。 我用了A的组件,也直接用了ngbDropdown

升级到Angular9后,延迟加载模块B时收到以下错误:

错误 NullInjectorError:R3InjectorError(BModule)[NgbDropdown -> NgbDropdown -> NgbDropdown -> NgbDropdown]: NullInjectorError:没有 NgbDropdown 的提供者! 在 NullInjector.push../node_modules/@angular/core/ivy_ngcc/fesm5/core.js.NullInjector.get (http://localhost:51000/vendor.js:60672:25) 在 R3Injector.push../node_modules/@angular/core/ivy_ngcc/fesm5/core.js.R3Injector.get (http://localhost:51000/vendor.js:71020:33) 在 R3Injector.push../node_modules/@angular/core/ivy_ngcc/fesm5/core.js.R3Injector.get (http://localhost:51000/vendor.js:71020:33) 在 R3Injector.push../node_modules/@angular/core/ivy_ngcc/fesm5/core.js.R3Injector.get (http://localhost:51000/vendor.js:71020:33) 在 NgModuleRef$1.push../node_modules/@angular/core/ivy_ngcc/fesm5/core.js.NgModuleRef $1.get (http://localhost:51000/vendor.js:84306:33) 在 R3Injector.push../node_modules/@angular/core/ivy_ngcc/fesm5/core.js.R3Injector.get (http://localhost:51000/vendor.js:71020:33) 在 NgModuleRef$1.push../node_modules/@angular/core/ivy_ngcc/fesm5/core.js.NgModuleRef $1.get (http://localhost:51000/vendor.js:84306:33) 在 Object.get (http://localhost:51000/vendor.js:82620:35) 在 getOrCreateInjectable (http://localhost:51000/vendor.js:63536:39) 在 Module.ɵɵdirectiveInject (http://localhost:51000/vendor.js:73885:12)

我做错了什么?

原来,有人在其中一个组件中使用了 Dropdown 而不是 ngbDropdown。

就像我在其他一些帖子上看到的那样,如果不遵守 ngbDropdown->ngbDropdownToggle->ngbDropdownMenu 的层次结构,通常会出现此问题。