Angular 2如何使用ngModules和Angular的模块

时间:2016-10-16 20:34:26

标签: angular

当谈到新的Microsoft.VisualStudio.DebuggerVisualizers.dll时,我有点困惑,在哪里和什么都要导入什么。

我现在拥有的是一个主app模块,一个共享模块和几个功能模块(将功能组合在一起的较小模块)。

我将所有功能模块导入共享模块,然后我可以将共享模块传递给我的应用程序中的其他模块。

现在我遇到的问题,或者只是一般性的懒惰问题,是当我需要使用诸如@ngModules之类的通用指令或其他任何模块中的指令时,我必须将Angular模块导入到每个模块中才能访问指令,http等。

现在我的问题是,您可以将必要的模块(例如*ngIf)导入顶级模块,在本例中是主应用程序模块,并让其他每个模块及其不同的指令,组件等都有什么时候访问它们而不必在每个模块中导入它们?就像你导入它们然后从顶级模块或其他东西导出它们一样。

2 个答案:

答案 0 :(得分:2)

我建议你阅读NgModule documentation,特别是shared模块。

基本上在您的SharedModule上,您可以重新导出其他模块:

import { NgModule }            from '@angular/core';
import { CommonModule }        from '@angular/common';
import { FormsModule }         from '@angular/forms';
import { AwesomePipe }         from './awesome.pipe';
import { HighlightDirective }  from './highlight.directive';
@NgModule({
  imports:      [ CommonModule ],
  declarations: [ AwesomePipe, HighlightDirective ],
  exports:      [ AwesomePipe, HighlightDirective,
                  CommonModule, FormsModule ]
})
export class SharedModule { }

要导出CommonModuleFormsModule您不需要在应用中导入它们,因为只需导入ShareModule,您也可以导入它们。

  

在审核我们的应用程序时,我们注意到许多需要SharedModule指令的组件也使用CommonModule中的NgIfNgFor,并使用[(ngModel)], FormsModule指令绑定到组件属性{{1} }。声明这些组件的模块必须导入CommonModuleFormsModuleSharedModule

     

我们可以通过SharedModule重新导出CommonModuleFormsModule来减少重复,以便SharedModule的导入者获得CommonModuleFormsModule免费。

答案 1 :(得分:2)

您应该尝试使每个功能模块都自包含。他们每个人都可以导入共享模块,该模块可以包含任何通用组件,服务或管道,然后导入任何常见的角度模块,如CommonModuleFormsModule等。共享模块不应导入你的任何功能模块。

您的应用模块可以导入每个功能模块和共享模块。

以下是共享模块文件的基本示例:

import { NgModule, CommonModule } from '@angular/core';
import { FormsModule } from '@angular/forms';

@NgModule({
   exports: [CommonModule, FormsModule]
})
export class SharedModule { }