Javascript 将共享模块拆分为多个子模块
在我的Javascript 将共享模块拆分为多个子模块,javascript,angular,Javascript,Angular,在我的SharedModule中,我想将相关的代码片段分割成多个子模块。但是,当我这样做时,我会丢失来自共享模块的公共导入。例如,我在我的SharedChildModule之前导入FormsModule,但是当我尝试在我的SharedChildModule中使用ngModel时,它告诉我,ngModel不可用。是否可以在共享模块中包含子模块,也可以让这些模块从SharedModule继承模块 当我将ChildSharedModule中的组件和指令直接包含在SharedModule中时,我没有任何
SharedModule
中,我想将相关的代码片段分割成多个子模块。但是,当我这样做时,我会丢失来自共享模块的公共导入。例如,我在我的SharedChildModule
之前导入FormsModule
,但是当我尝试在我的SharedChildModule
中使用ngModel时,它告诉我,ngModel
不可用。是否可以在共享模块中包含子模块,也可以让这些模块从SharedModule
继承模块
当我将ChildSharedModule
中的组件和指令直接包含在SharedModule
中时,我没有任何问题。只有当我尝试将它们移动到子模块中,然后将整个模块导入到SharedModule
中时,才会出现错误
@NgModule({
声明:[],
出口:[
公共模块,
FormsModule,
子共享模块
],
进口:[
公共模块,
FormsModule,
子共享模块
]
})
导出类SharedModule{}
@NGD模块({
声明:[
儿童教育指令,
子控件组件
],
出口:[
儿童教育指令,
子控件组件
]
})
导出类SharedChildModule{}
您不能向下推模块的依赖项,但可以向上导出模块
@NgModule({
declarations: [],
exports: [
ChildSharedModule
],
imports: [
ChildSharedModule
]
})
export class SharedModule { }
@NgModule({
imports: [
CommonModule,
FormsModule
],
declarations: [
ChildValidatorDirective,
ChildControlComponent
],
exports: [
ChildValidatorDirective,
ChildControlComponent,
CommonModule,
FormsModule
]
})
export class SharedChildModule {}
现在SharedModule
将导入SharedChildModule
,并将接收该子模块导出的所有内容。由于SharedModule
也在导出SharedChildModule
,因此导入它的家长也将收到CommonModule
和FormsModule
你基本上打破了这一局面,使单元测试变得非常困难
Angular将不再能够删除未使用的模块,因为您正在将所有组件耦合在一起。从SharedChildModule
中删除FormsModule
也会变得很困难,因为您不知道有多少家长依赖它
您应该尽可能地保持模块的单一性和扁平性,并且让每个模块只导入它特定需要的内容
当消费者不知道其他模块是需求时,可以导出其他模块