- 服务用于放置和特定组件无关并希望跨组件共享的数据或逻辑
- 服务出现的目的在于解耦组件类中的代码,是组件类中的代码干净整洁
- 服务是由 Injectable 装饰器装饰的类 ```typescript import { Injectable } from ‘@angular/core’;
@Injectable({ providedIn: ‘root’ })
export class ServiceService { constructor() { } }
- 在使用服务时不需要在组件类中通过 new 的方式创建服务实例对象获取服务中提供的方法,以下写法错误,切记切记!!!```typescriptimport { AppService } from "./AppService"export class AppComponent {let appService = new AppService()}
- 服务的实例对象由 Angular 框架中内置的依赖注入系统创建和维护。服务是依赖需要被注入到组件中
- 在组件中需要通过 constructor 构造函数的参数来获取服务的实例对象
- 涉及参数就需要考虑参数的顺序问题,因为在 Angular 应用中会有很多服务,一个组件又不可能会使用到所有服务,如果组件要使用到最后一个服务实例对象,难道要将前面的所有参数都写上吗 ? 这显然不合理
- 在组件中获取服务实例对象要结合 TypeScript 类型,写法如下 ```typescript import { AppService } from “./AppService”
export class AppComponent { constructor (private appService: AppService) {} } ```
- Angular 会根据你指定的服务的类型来传递你想要使用的服务实例对象,这样就解决了参数的顺序问题
- 在 Angular 中服务被设计为单例模式,这也正是为什么服务可以被用来在组件之间共享数据和逻辑的原因
