将服务相关组件移动到共享模块



假设我有一个名为CarDetailsComponent的组件,它使用了一个CarApiService,这两个组件都在CarModule中。现在我想将该组件移到SharedModule中。因为多个模块也需要相同的组件。我无法共享整个CarModule,因为它已经将其他模块(例如:、CustomerModuleShopModule(导入其中。

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怎么样并将其导入到需要的位置?

最新更新