假设我有一个名为CarDetailsComponent
的组件,它使用了一个CarApiService
,这两个组件都在CarModule
中。现在我想将该组件移到SharedModule
中。因为多个模块也需要相同的组件。我无法共享整个CarModule
,因为它已经将其他模块(例如:、CustomerModule
、ShopModule
(导入其中。
将CarDetailsComponent
移动到SharedModule
不是问题,而是我现在如何处理依赖服务(CarApiService
(,因为它也由组件以及CarModule
中的其他组件使用。
我尝试使用提供者(useClass
和lot(将该服务替换为正在使用的模块的另一个服务。然而,我最终所做的只是将相同的功能复制粘贴到其他模块的服务中。
我确实考虑过将CarApiService
移到SharedModule
中,但它确实属于CarModule
(因为这里的大多数组件都使用它,只有CarDetailsComponent
使用该服务(。
这里有什么更好的方法?
您的CarApiService
需要在一个模块中(每个模块都有自己的服务单例(,还是整个应用程序使用相同的实例?
如果是后者,您可以从所有模块中删除CarpApiService
,并将@Injctor
装饰器更改为:
@Injectable({
providedIn: 'root',
})
然后,您可以在任何构造函数中导入它,而无需将它添加到组件模块中。
有关更多信息,请参阅Angular文档:https://angular.io/guide/singleton-services
在声明和导出CarDetailsComponent的地方制作一个CarDetailModule怎么样并将其导入到需要的位置?