1、Service是封装了某一特定功能的独立模块;
2、它可以通过注入的方式供别的模块使用;
3、Service分为很多种,包括:值、函数以及应用所需的特性;
4、最简单的Service
import { Injectable } from '@angular/core'; import { ApiService } from '@angularui/devcloud/services'; @Injectable() export class LentestService { USERS: Array<any>; constructor(private api: ApiService){ // 依赖注入 this.USERS = [ {id:1, name:'a'}, {id:2, name:'b'}, {id:3, name:'c'}, ]; } getUsers(){ return this.USERS; } }
这里要提下依赖注入(Dependency Injection,DI):
通过DI,对象(这里指Service对象)在被创建时,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递给它,就是说,依赖被注入到对象中。
依赖注入一般放在Service的构造函数的参数那块,如上述例子的
constructor(private api: ApiService)
相对应的,在Angular创建组件时,会首先为组件所需的服务找一个注入器(Injector),也就是上面说的外界实体;
Injector时一个维护服务实例的容器,存放着以前创建的实例;
如果Injector中还没有ApiService的服务实例,Injector就会创建一个ApiService实例并添加到Injector中,然后返回给Angular;
最后当所有依赖的服务都被解析完并返回时,Angular会以这些依赖服务为参数调用组件的构造函数,从而创建组件;