我按如下方式设置了我的项目:
imports: []
)declarations: [sharedComponent], providers: [sharedService]
)imports: [sharedModule]
)imports: [sharedModule]
)这不会抛出任何错误,但在sharedService
构造函数中设置断点会显示它不是单例。
我可以将我的导入改为:
imports: [sharedModule]
)declarations: [sharedComponent], providers: [sharedService]
)imports: []
)imports: []
) sharedService
现在似乎是单身,但我收到错误
组件sharedComponent不是任何NgModule的一部分,或者该模块尚未导入您的模块
我希望我的共享服务是单例,但需要访问共享组件。我做错了什么?
答案 0 :(得分:1)
对于遇到此问题的任何其他人,我对我的共享模块应包含的内容存在核心误解。 The docs say:
使用组件,指令和管道创建 SharedModule 你在应用程序的任何地方使用。该模块应完全由 声明,大部分是导出的。
SharedModule可能会重新导出其他窗口小部件模块,例如 CommonModule,FormsModule和具有UI控件的模块 使用最广泛。
出于解释的原因,SharedModule不应该有提供商 先前。它的任何进口或再出口模块也不应该有 供应商。如果您偏离本指南,请了解您正在做的事情 为什么。
导入功能模块中的SharedModule,这两个模块都已加载 应用程序启动时以及稍后延迟加载的应用程序。
为您加载的单身人士服务提供提供商提供 CoreModule 当应用程序启动时。
仅在根AppModule中导入CoreModule。永远不要导入CoreModule 在任何其他模块中。
考虑使CoreModule成为没有的纯服务模块 声明。
将我的共享服务从SharedModule迁移到CoreModule是解决方案。