按照Angular准则,我试图创建一个包含几个功能模块的示例项目。
为了在每个模块中使用Angular Material,我创建了一个共享模块,用于导入和导出这些Material模块。只要需要角材料,就会导入此共享模块。
根据指南,每个功能模块都应该具有自己的路由器模块,因此我为每个功能都创建了一个。
我只希望将与路由相关的项目保留在路由模块中,从而将共享模块导入功能模块中,而令我惊讶的是,该模块不起作用,即材料指令不起作用。
//Feature Module
@NgModule({
imports: [..., SharedModule], //SharedModule import doesn't make material available
declarations: []
})
一旦将此共享模块导入路由器模块,材料组件便开始工作。
//Feature Router Module
@NgModule({
imports: [..., SharedModule], //SharedModule makes material available
declarations: []
})
如何通过将共享模块导入功能模块使其工作?
[查看您链接的StackBlitz,SubComponent
在SubRoutesModule
中声明。该组件只能访问其声明所在模块的导入,这说明了您描述的问题。
如何通过将共享模块导入功能模块使其工作?
从SubComponent
的声明中删除SubRoutesModule
并将其添加到SubModule
的声明中。