angular2依赖注入概述

来源:互联网 发布:淘宝的读书软件 编辑:程序博客网 时间:2024/05/22 05:28

学习笔记

1.依赖注入要解决的问题

在需要一个对象的时候我们通常的方法是现将这个对象实例化,再将实例化后的对象作为一个参数传递给调用对象的函数,但是如果一个函数需要调用多个对象,也就是依赖多个对象的时候,就需要实例化多个对象之后将实例化之后的对象当做参数传递给函数。这样我们就需要实例化大量的对象。能不能有一种方法让我们不用实例化那么多对象,我的函数需要什么参数,就给我什么参数呢?这个时候就产生了依赖注入机制,依赖注入将我们需要的参数注入到当前页面,当函数需要的时候就直接调用参数即可,函数依赖谁就调用谁,前提是函数依赖的对象已经注入。

2.与此同时又另外一个名词:控制反转:Inversion of Control简称IOC;依赖注入:Dependency Injection简称DI

控制反转将依赖的控制权由代码的内部转到了代码的外部。依赖注入和控制反转其实是一体两面:只不过控制反转强调的是目的,目的就是将依赖的控制权从代码的内部转到代码的外部。而依赖注入强调的是手段,如何实现控制反转,就是依赖注入。angular2实现控制反转的机制就是依赖注入。

3.依赖注入的好处

 a.可以提高代码的松耦合性和代码的可重用性.当使用依赖注入之后同一个组件根据不同的情况依赖不同的service的时候就可以在需要用到组件的地方引入组件,同时在不同的也面注入不同的service。达到了组件的可重用性。同时同一个service被不同的组件需要时也可以注入到不同的组件当中。

例如以下代码:

当组件需要一个service 的时候我们可以在这个页面的providers里面用provide注册一个类型为ProviderService的Token值:provider:ProviderService,当组件或者指令声明自己需要一个类型为ProviderService的时候,实例化一个AnotherProductService,并将其注入到目标对象。

那么,组件和指令怎么声明自己需要的token类型呢?只需要在组件或者指令的构造函数里面将需要的Token类型赋给一个变量。productService:ProviderService.当组件声明自己需要的token类型之后就会去providers里面寻找该Token对应的服务。



当在构造函数里面 ,实例化一个Token时,这个服务会根据Token的名字去找到这个token对应的服务来实例化。token的名字可以是一样的,但是token对应的服务可以是不一样的。提供器里面提供的服务就是token的名字。

用法:

1.ng g service   aa/product    在aa文件夹下创建一个叫product的service 


2.编写模块module


3.编写对应的component组件


4.编写模板显示数据


效果:

更复杂的。在组件里面注入服务

创建另一个服务


在组件注入服务


模板和之前一样,效果也一样就是获取的值不一样而已、


在服务里面注入服务

创建一个服务


在服务里面注入服务


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 买的小兔子拉稀怎么办 半个月的小兔子怎么办 母兔下崽没奶怎么办 母松鼠下崽后没有奶怎么办 母猫下崽后小猫没奶吃怎么办 母兔产后没奶水怎么办 兔子生崽了不管怎么办 兔子下小兔不管小兔怎么办 兔子下小兔示喂奶怎么办 兔子生完小兔不喂奶怎么办 小兔子生宝宝了怎么办 人摸了小兔崽怎么办 狗狗尿道有脓怎么办 笼养母兔下崽了怎么办 小羊羔站不起来怎么办 兔子不让小兔子吃奶怎么办 兔子不吃东西没精神怎么办 母兔没有初奶怎么办 兔子只喝水不吃东西怎么办 兔子不吃东西也不喝水怎么办 兔子怀孕后不爱吃东西喝水怎么办 母兔产仔无奶怎么办 仔兔十五天母兔没奶怎么办 兔子刚生下兔宝宝该怎么办 兔子不吃草超瘦怎么办 兔子喝水喝多了怎么办 狗吃了变质食物怎么办 狗崽20天没睁眼怎么办 刚生的小狗缺氧怎么办 狗狗生出来了怎么办 刚生的小狗狗死了怎么办 母狗生的死狗怎么办 狗生宝宝都死了奶水怎么办 狗狗生出来不动怎么办 兔子喝了84水怎么办 小狗喝了84水怎么办 天气热宝宝不爱喝水怎么办 狗脐带掉了出血怎么办 刚生的小狗没奶怎么办 家兔在笼子里下崽怎么办 小兔子不吃东西 精神不好怎么办