假设我有SharedComponents
个模块。在此模块中有一个SomeView
组件。该组件使用SomeDirective
中的指令DirectivesModule
。我有这样的事情:
@NgModule({
imports: [DirectivesModule, ...],
declarations: [SomeView, ...],
...
})
然后我需要将SomeView
移到其他模块。这让我得以:
@NgModule({
imports: [DirectivesModule, ...],
declarations: [...],
...
})
没有其他声明的元素使用DirectivesModule
。它不再需要了,所以我想删除它。但是我不能说在没有研究其他声明的情况下删除它是安全的。
所以我的问题是:有没有办法找到给定的模块导入或提供者是否可以安全删除?在我正在开发的项目中,一个模块可以加载另外20个模块,保持清洁是非常困难的任务。
答案 0 :(得分:1)
所以我的问题是:有没有办法找到给定的模块导入或提供程序是否可以安全删除?在我正在从事的项目中,一个模块可以加载20个其他模块,保持其清洁确实是一项艰巨的任务。
单元测试是验证可以安全删除模块的唯一已知方法。为何Angular无法自我检测模块的用法的解释相当复杂,但请记住,模块可以转发内部模块。因此,一个模块可能具有许多子模块的 exports 。事实是,可以在运行时使用injector.get(myService)
解析提供程序,从而使这变得更加困难。这使得查找用法极为困难,因为无法通过查看源代码来了解正在使用哪个注入器。
如果您只有很少的单元测试可以验证可以创建一个组件,那么您将知道模块的拆除是否会破坏单元测试。