Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 当我们在应用程序启动时导入BrowserModule时,是否需要重新导出CommonModule?_Angular - Fatal编程技术网

Angular 当我们在应用程序启动时导入BrowserModule时,是否需要重新导出CommonModule?

Angular 当我们在应用程序启动时导入BrowserModule时,是否需要重新导出CommonModule?,angular,Angular,我试图理解angular中的共享模块,我见过这样的例子 import { CommonModule } from '@angular/common'; @NgModule({imports:[CommonModule], exports:[CommonModule]}) export class SharedModule{} 我们正在导入CommonModule并导出CommonModule,因此我们不需要导入CommonModule,但我们在应用程序启动时导入了BrowserModule,它

我试图理解angular中的
共享模块
,我见过这样的例子

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