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会以这些依赖服务为参数调用组件的构造函数,从而创建组件;

posted on 2018-04-11 13:01  Failbs  阅读(246)  评论(0编辑  收藏  举报