为什么延迟加载模块必须导入commonModule?Angular 2

Viv*_*vek 14 lazy-loading angular

当我们在应用程序的根模块中导入BrowserModule时,我们可以使用NgIf和NgFor(在急切加载的组件中).但对于延迟加载的模块,我必须导入已由root的BrowserModule导出的CommonModule.为什么我们必须在延迟加载的模块中再次导入它?

yur*_*zui 21

正如Ward Bell所说(https://devchat.tv/adv-in-angular/119-aia-avoiding-common-pitfalls-in-angular2):

只要您的应用程序中只有一个模块并且您将所有内容都放在那里,您就可以从隐藏在浏览器模块中的公共模块中受益.你创建一个新模块的时候,懒惰与否,任何新模块,你向它声明任何东西,新模块都有一个干净的状态.它不知道任何东西,Angular或任何东西.它是任何模块,而不是您声明某些内容的惰性模块,您将不得不导入您在其中声明的任何组件实际需要的所有内容.这就是你需要通用模块的原因

模块不继承对在其他模块中声明的组件,指令或管道的访问.(https://angular.io/guide/ngmodule#add-the-contactmodule见橙色块)

这就是为什么你必须导入CommonModule到访问ngIf,ngFor等指令.您的模块对其他模块的指令一无所知.它只查看它declarationsexports来自导入的模块

也可以看看: