Angular 2 服务:正确的用例

Angular 2 service : correct use case

我最近2个月一直在学习Angular2,在使用这些服务时有点迷茫。如果我正在开发一个包含多个组件的应用程序,并且每个组件都有一组要从 Web 服务显示的数据,如果它们是在同一模型上构建的,我是否可以使用单个服务来显示数据,或者我是否应该通过以下方式创建一个服务组件?

在此先感谢您就此事给予我启发

服务 classes(提供者)用 @Injectable 修饰,可以是:

  • 你在提供者的@ngModule 中的 app-module.ts 中定义它们的单例:[] array
  • 注入 @Component 装饰器用于单个服务无法完成的用例。

如果您的服务包含状态,那么单例可能会导致副作用,这就是您将它们放在 @Component

中的时候

文档在这里具有误导性。向下滚动到元数据属性:查看 'providers:'

您可以拥有无​​状态服务,例如始终返回 Observables。

即在 HTML 模板后面的组件 Typescript 中订阅被调用的服务。

  • 组件 class 具有可观察的属性
  • html 模板使用 observable class 属性 和 aysnc pipe。 |异步

您可以在多个组件中使用一个服务,而不需要为每个组件创建一个唯一的服务。

angular2 reference:

Instead of copying and pasting the same code over and over, you'll create a single reusable data service and inject it into the components that need it.

此外,服务是单例的,组件中的所有实例都是相同的(它基于分层注入器)。