1

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

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

imports: [...NgbDropdownModule...]

exports: [...NgbDropdownModule...]

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

升级到 Angular 9 后,当模块 B 延迟加载时,我收到以下错误:

错误 NullInjectorError: R3InjectorError(BModule)[NgbDropdown -> NgbDropdown -> NgbDropdown -> NgbDropdown]: NullInjectorError: No provider for 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。得到 (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 )

我究竟做错了什么?

4

1 回答 1

1

事实证明,有人在其中一个组件中放置了 Dropdown 而不是 ngbDropdown。

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

于 2020-03-20T07:35:09.670 回答