我有一个需要使用组件的延迟加载模块。我已将其添加到应用程序模块声明中,并期望这应该使声明的组件应用程序范围广泛。
虽然Angular无法识别延迟加载的模块中的组件。我尝试将其添加到两个模块声明中,然后收到警告,要求在app.module
和lazyLoaded.module
上方的更高模块中添加声明。
e.g。 (nameOfModule/Component
)
错误:Type(DeclareMeComponent)是2个模块声明的一部分:(AppModule)和(LazyLoadedModule)!请考虑将(DeclareMeComponent)移动到导入AppModule和(LazyLoadedModule)的更高模块。您还可以创建一个新的NgModule,它导出并包含(DeclareMeComponent),然后在(AppModule)和(DeclareMeComponent)中导入NgModule。
更高 是什么<{1}}?如何让延迟加载的模块继承 / 使用声明的组件以及 app 模块?
答案 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