Angular项目中仅在两个模块共享的组件是否需设为常规共享组件?
常规的Shared模块是为所有模块提供通用共享内容的,把这个仅Module1和Module2能用的组件放进去,就打破了“仅特定模块可用”的限制——其他模块只要导入Shared就能访问它,完全不符合你的需求。
给你两个靠谱的解决方案:
- 创建专属的小共享模块:比如新建一个
SharedModuleForModule1And2,把这个组件和它依赖的相关内容都放在这里。然后只让Module1和Module2导入这个小模块,其他模块完全不碰它。这种方式最清晰,也方便后续如果还有其他仅这两个模块共享的组件/工具,可以统一管理。 - 挂靠到其中一个模块的子模块:如果这个组件和Module1的业务逻辑绑定更深,可以把它放到Module1的一个子模块(比如
Module1/SharedWithModule2)里,然后让Module2只导入这个子模块,而不是整个Module1。不过这种方式的隔离性不如专属共享模块,后续扩展起来也没那么灵活。
另外要注意:这个专属组件的依赖(比如专属样式、辅助函数)也尽量跟着它一起隔离,别随便依赖全局Shared里的通用内容,避免不小心把其他模块的依赖带进来。
内容的提问来源于stack exchange,提问作者Joan Miquel
相关产品推荐
相关产品推荐

