我应该使用 Angular 组件作为可注入服务吗?

Should I use an Angular Component as an Injectable Service?

当我需要某个组件的某些方法并托管在另一个组件上时,在 Angular 中使用哪种最佳做法? 我应该使用具有该方法的组件本身作为服务,在模块的提供者规范中指定它,还是为该操作创建一个专用的 .service.ts 文件并将其注入关于模块声明?

如果你必须在两个不同的组件上使用一个独特的方法,常见的路径是在 shared.service.ts 或类似的东西中抽象该方法,然后通过两个组件的依赖注入注入它 .ts

如果在同一模块中:

您可以只使用 <app-user-list></app-user-list> 在另一个组件中使用一个组件。

在不同的模块中:

如果您希望在应用程序的不同部分重用某些组件或服务,您应该使用所谓的共享模块。然后,您可以将该模块导入您选择的任何模块中,以访问它的组件或服务。

以下是您可以在共享模块中找到的内容列表:

  • 导航组件
  • 确认对话框组件
  • order-list分量
  • 通知服务

此问题已被至少一位用户标记为基于“意见”, 但我不同意。

Angular 具有“组件”和“服务”的特定角色,您的 'shared method' 显然(对我而言)属于服务类别。

这往往变得不清楚的原因是因为许多开发人员倾向于将 service-like 逻辑直接放入组件中。这可能是因为它很容易做到,而且网络上有很多简单的例子可以证明这一点。

但是,如果您认为组件实际上是 MVC 术语中的“控制器”,那么您会发现组件中处理数据的逻辑不属于那里。

那么,简短的回答....将方法提取到服务中。