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

Jon*_*002 9 angular

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

虽然Angular无法识别延迟加载模块中的组件.我试着将它添加到这两个模块的声明,然后找来一个警告,询问以加入上述较高的模块中的声明app.modulelazyLoaded.module.

例如(nameOfModule/Component)

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

什么是app.module?以及如何让延迟加载的模块继承/使用声明的组件以及app模块?

Pie*_*Duc 5

高于AppModule将是一个SharedModule。在这里,您可以定义将AppModule在所有延迟加载的模块中以及内部使用的组件。

@NgModule({
  imports: [
    CommonModule
  ],
  declarations: [
    DeclareMeComponent
  ],
  exports: [
    DeclareMeComponent,
    CommonModule
  ]    
})
export class SharedModule {}
Run Code Online (Sandbox Code Playgroud)

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

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

@NgModule({
  imports: [
    BrowserModule,
    SharedModule
  ]   
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,没有必要宣布DeclareMeComponent里面的AppModule,因为它是从更高的进口SharedModule