Angular 当我们在应用程序启动时导入BrowserModule时,是否需要重新导出CommonModule?
我试图理解angular中的Angular 当我们在应用程序启动时导入BrowserModule时,是否需要重新导出CommonModule?,angular,Angular,我试图理解angular中的共享模块,我见过这样的例子 import { CommonModule } from '@angular/common'; @NgModule({imports:[CommonModule], exports:[CommonModule]}) export class SharedModule{} 我们正在导入CommonModule并导出CommonModule,因此我们不需要导入CommonModule,但我们在应用程序启动时导入了BrowserModule,它
共享模块
,我见过这样的例子
import { CommonModule } from '@angular/common';
@NgModule({imports:[CommonModule], exports:[CommonModule]})
export class SharedModule{}
我们正在导入CommonModule并导出CommonModule,因此我们不需要导入CommonModule,但我们在应用程序启动时导入了
BrowserModule
,它导入了“CommonModule”。是否有必要重新导出CommonModule?还请解释一下共享模块的确切含义 共享模块基本上是收集其他模块中使用的所有声明并将其导出的模块。例如,在A
模块中有A组件
,在B
模块中有B组件
。您想在模块C
中使用它们。所以你必须这样做:
@NgModule({
imports: [ModuleA, ModuleB]
...
})
export class ModuleC {}
但是,您可以在某些共享模块中收集这些信息:
@NgModule({
imports: [ModuleA, ModuleB],
exports: [ModuleA, ModuleB]
...
})
export class SharedModule {}
然后只需导入SharedModule
:
@NgModule({
imports: [SharedModule]
...
})
export class ModuleC {}
您可以导入它,以便共享模块中声明的组件可以使用CommonModule
声明。如果没有在SharedModule
上定义任何声明,只需导出CommonModule
,而无需导入
@NgModule({
imports: [], // don't need to import if modules doesn't have declarations
exports: [ModuleA, ModuleB]
...
})
export class SharedModule {}
但我们在应用程序启动时导入BrowserModule,它会导入
`公共模块
导入一次所需模块的模块就足够了但是,您需要将带有声明的模块导入使用其他模块声明的每个模块。因此,即使将BrowserModule
导入AppModule
,仍然需要将CommonModule
导入使用公共声明(组件、指令和管道)的其他模块。因此,您不需要将BrowserModule
导入这些模块,而是导入SharedModule