在我的应用程序中,我有几个模块,其中有几个是通过延迟加载实现的。对于惰性模块,我已经看到即使已将MatButtonModule(and other modules as well)
导入到customs.module.js
app.module.js.
导入到它们各自的if `getopt -T >/dev/null 2>&1` ; [ $? = 4 ]
then
#do a thing
else
#do the other thing
fi
文件中
我的问题是:对于延迟加载,这是唯一的方法,还是有什么更聪明的方法,我只需一次导入物料模块并将其适用于所有海关模块?
答案 0 :(得分:1)
实际上不是因为它们是延迟加载的。一个模块只能访问在其声明中或在其导入的其他模块的声明中定义的组件。因此,如果您急切地将功能模块加载到AppModule中,则功能模块将无法访问AppModule的声明。
确实没有办法解决这个问题,我认为它的良好设计对于模块可以访问的内容是明确的。但是,如果要在整个位置导入一组通用的Material模块,您可以做的一件事就是创建一个SharedMaterialModule:
@NgModule({
import: [
MatButtonModule,
MatInputModule
],
export: [
MatButtonModule,
MatInputModule
]
})
export class SharedMaterialModule {
}
然后,您可以只导入SharedMaterialModule,而不必导入MatButtonModule以及您希望广泛访问的任何其他对象。但是请注意:如果您在此处添加了太多的东西,而这些东西并不是真正在所有地方都被使用的,那么您最终可能会使用他们并未真正使用的东西来使功能模块具有更大的下载空间。