当谈到新的Microsoft.VisualStudio.DebuggerVisualizers.dll
时,我有点困惑,在哪里和什么都要导入什么。
我现在拥有的是一个主app模块,一个共享模块和几个功能模块(将功能组合在一起的较小模块)。
我将所有功能模块导入共享模块,然后我可以将共享模块传递给我的应用程序中的其他模块。
现在我遇到的问题,或者只是一般性的懒惰问题,是当我需要使用诸如@ngModules
之类的通用指令或其他任何模块中的指令时,我必须将Angular模块导入到每个模块中才能访问指令,http等。
现在我的问题是,您可以将必要的模块(例如*ngIf
)导入顶级模块,在本例中是主应用程序模块,并让其他每个模块及其不同的指令,组件等都有什么时候访问它们而不必在每个模块中导入它们?就像你导入它们然后从顶级模块或其他东西导出它们一样。
答案 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 { }
要导出CommonModule
和FormsModule
您不需要在应用中导入它们,因为只需导入ShareModule,您也可以导入它们。
在审核我们的应用程序时,我们注意到许多需要SharedModule指令的组件也使用CommonModule中的
NgIf
和NgFor
,并使用[(ngModel)],
FormsModule
指令绑定到组件属性{{1} }。声明这些组件的模块必须导入CommonModule
,FormsModule
和SharedModule
。我们可以通过
SharedModule
重新导出CommonModule
和FormsModule
来减少重复,以便SharedModule
的导入者获得CommonModule
和FormsModule
免费。
答案 1 :(得分:2)
您应该尝试使每个功能模块都自包含。他们每个人都可以导入共享模块,该模块可以包含任何通用组件,服务或管道,然后导入任何常见的角度模块,如CommonModule
,FormsModule
等。共享模块不应导入你的任何功能模块。
您的应用模块可以导入每个功能模块和共享模块。
以下是共享模块文件的基本示例:
import { NgModule, CommonModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
@NgModule({
exports: [CommonModule, FormsModule]
})
export class SharedModule { }