• 服务用于放置和特定组件无关并希望跨组件共享的数据或逻辑
    • 服务出现的目的在于解耦组件类中的代码,是组件类中的代码干净整洁
    • 服务是由 Injectable 装饰器装饰的类 ```typescript import { Injectable } from ‘@angular/core’;

    @Injectable({ providedIn: ‘root’ })

    export class ServiceService { constructor() { } }

    1. - 在使用服务时不需要在组件类中通过 new 的方式创建服务实例对象获取服务中提供的方法,以下写法错误,切记切记!!!
    2. ```typescript
    3. import { AppService } from "./AppService"
    4. export class AppComponent {
    5. let appService = new AppService()
    6. }
    • 服务的实例对象由 Angular 框架中内置的依赖注入系统创建和维护。服务是依赖需要被注入到组件中
    • 在组件中需要通过 constructor 构造函数的参数来获取服务的实例对象
    • 涉及参数就需要考虑参数的顺序问题,因为在 Angular 应用中会有很多服务,一个组件又不可能会使用到所有服务,如果组件要使用到最后一个服务实例对象,难道要将前面的所有参数都写上吗 ? 这显然不合理
    • 在组件中获取服务实例对象要结合 TypeScript 类型,写法如下 ```typescript import { AppService } from “./AppService”

    export class AppComponent { constructor (private appService: AppService) {} } ```

    • Angular 会根据你指定的服务的类型来传递你想要使用的服务实例对象,这样就解决了参数的顺序问题
    • 在 Angular 中服务被设计为单例模式,这也正是为什么服务可以被用来在组件之间共享数据和逻辑的原因