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 的层次结构,通常会出现此问题。
我有一个共享模块 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 的层次结构,通常会出现此问题。