Angular 延迟加载的模块如何继承应用程序模块声明?

Angular 延迟加载的模块如何继承应用程序模块声明?,angular,Angular,我有一个延迟加载的模块,需要使用组件。我已将其添加到应用程序模块声明中,并希望这将使声明的组件在应用程序范围内 尽管Angular无法识别延迟加载的模块中的组件。然后我尝试将其添加到两个模块声明中,并收到一条警告,要求在app.module和lazyload.module上方的更高模块中添加声明 e、 g.(模块/组件的名称) 错误:类型(DeclareMeComponent)是两个模块声明的一部分:(AppModule)和(lazyloaddemodule)!请考虑将(DealMeCo组件)移

我有一个延迟加载的模块,需要使用组件。我已将其添加到应用程序模块声明中,并希望这将使声明的组件在应用程序范围内

尽管Angular无法识别延迟加载的模块中的组件。然后我尝试将其添加到两个模块声明中,并收到一条警告,要求在
app.module
lazyload.module
上方的更高模块中添加声明

e、 g.(
模块/组件的名称

错误:类型(DeclareMeComponent)是两个模块声明的一部分:(AppModule)和(lazyloaddemodule)!请考虑将(DealMeCo组件)移动到导入AppModule和(LaZyLogAdDeMod)的更高模块中。您还可以创建一个新的NgModule,该模块导出并包含(DeclareMeComponent),然后在(AppModule)和(DeclareMeComponent)中导入该NgModule


什么
应用程序模块
高?如何让延迟加载的模块继承
/使用声明的组件以及
应用
模块?

高于
AppModule
的将是一个
共享模块
。在这里,您可以定义将在
AppModule
和任何延迟加载模块中使用的组件

@NgModule({
  imports: [
    CommonModule
  ],
  declarations: [
    DeclareMeComponent
  ],
  exports: [
    DeclareMeComponent,
    CommonModule
  ]    
})
export class SharedModule {}
在这里,您将声明和导出组件、指令、管道以及整个shebang。您将在整个应用程序中使用的核心构建块。在这里,您可能还将导入和导出
CommonModule
。它类似于
浏览器模块
,但是您可以在应用程序中多次导入某些内容

现在,您可以通过导入共享组件在
AppModule
和任何其他模块中使用该组件

@NgModule({
  imports: [
    BrowserModule,
    SharedModule
  ]   
})
export class AppModule {}

如您所见,无需在
AppModule
中声明
DeclareMeComponent
,因为它是从较高的
SharedModule

导入的,正如最后一句话所示,您创建了一个共享模块。好的,谢谢你的建议谢谢我在我的角度项目中也遇到了这种问题。“undefined不是webpackAsyncContext(eval at./src/$$\u lazy\u route\u resource lazy recursive(main.bundle.js:13),:100:34)的SystemJsNgModuleLoader.loadFactory(core.js:6590)的SystemJsNgModuleLoader.load(core.js:6554)的函数,router.js:4595)在MergeMapSubscriber.eval[作为项目](router.js:2061)”的RouterConfigLoader.load(router.js:4575)中。