热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

angular2依赖注入概述

学习笔记1.依赖注入要解决的问题在需要一个对象的时候我们通常的方法是现将这个对象实例化,再将实例化后的对象作为一个参数传递给调用对象的函数,但是如果一个函数需要调用多个对象,也就是

学习笔记

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对应的服务。

angular2依赖注入概述

angular2依赖注入概述

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

用法:

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


angular2依赖注入概述

2.编写模块module

angular2依赖注入概述

3.编写对应的component组件

angular2依赖注入概述

4.编写模板显示数据

angular2依赖注入概述

效果:angular2依赖注入概述

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

创建另一个服务

angular2依赖注入概述

在组件注入服务

angular2依赖注入概述

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


在服务里面注入服务

创建一个服务

angular2依赖注入概述

在服务里面注入服务

angular2依赖注入概述


推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
author-avatar
mobiledu2502910181
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有