延迟加载的模块如何继承App Modules声明?

时间:2017-08-08 06:48:45

标签: angular

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

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

e.g。 (nameOfModule/Component

  

错误:Type(DeclareMeComponent)是2个模块声明的一部分:(AppModule)和(LazyLoadedModule)!请考虑将(DeclareMeComponent)移动到导入AppModule和(LazyLoadedModule)的更高模块。您还可以创建一个新的NgModule,它导出并包含(DeclareMeComponent),然后在(AppModule)和(DeclareMeComponent)中导入NgModule。

更高 是什么<{1}}?如何让延迟加载的模块继承 / 使用声明的组件以及 app 模块?

1 个答案:

答案 0 :(得分:5)

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

@NgModule({
  imports: [
    CommonModule
  ],
  declarations: [
    DeclareMeComponent
  ],
  exports: [
    DeclareMeComponent,
    CommonModule
  ]    
})
export class SharedModule {}

在这里,您将声明并导出组件,指令,管道,整个shebang。您将在整个应用程序中使用的核心构建块。在这里,您可能还会导入和导出CommonModule。它与BrowserModule类似,但您可以在应用程序中多次导入。

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

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

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

导入的