详解Angular中的依赖注入模式

本篇文章给大家详细介绍一下angular中的依赖注入模式。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

详解Angular中的依赖注入模式

Angular 依赖注入模式

依赖注入: Dependency Injection 简称 DI

依赖注入模式要解决的问题

开发中, 会经常遇见对象的实例化, 当多个对象之间存在依赖时, 手工实例化会特别麻烦。

如果一个对象A要依赖对象 B, 那么对象 A 不需要明确地去实例化B对象, B 会由外部机制注入进来, 对象 A 只需要声明一个B对象就行。 这就是依赖注入要解决的问题。

与依赖注入经常同时出现的另一个概念叫做控制反转

控制反转: Inversion of Control 简称 IOC, 是指将依赖的控制权从代码的内部反转到代码的外部。

依赖注入控制反转是一体两面, 表达的是一个思想。 依赖注入侧重于描述手段, 即如何实现控制反转, 控制反转侧重于描述目的, 即目的是将依赖的控制权从代码的内部反转到代码的外部。

相关教程推荐:《angular教程》

依赖注入模式的好处

松耦合,可重用提高组件的可测试性

Angular 如何实现依赖注入

注入器

每个组件都有一个注入器实例, 负责注入组件需要的对象。 注入器是 Angular 提供的一个服务类。 一般情况下不用直接调用注入器的方法, 注入器会自动通过组件的 构造函数(constructor) 将组件需要的对象注入进组件。 提供器会告诉注入器如何创建实例。

提供器

为了让注入器知道注入的对象如何实例化,需要指定提供器,一般情况下,我们会通过组件或模块的 providers 属性声明需要提供的对象。

一般声明方式

providers:[{provide:AService, useClass: AServivce}]  providers:[AService]provide 属性:指定了提供器的令牌(token)useClass 属性:表示实例化方式是 new

登录后复制

工厂方法声明方式

使用 useFactory 方式实例化对象providers:[  {    provide:AService,     useFactory: (bService: BService) => {      ....    },    deps:[BService] //deps声明工厂方法所依赖的服务。    ]工厂方法创建的对象是单例对象

登录后复制

在构造函数(constructor)中声明的对象,会根据类名去匹配提供器(providers)中的令牌(token),然后根据 useClass 属性的值去实例化指定的对象。

提供器注入规则

当一个提供器声明在模块时,对所有组件都是可见的,所有组件都可以注入;当一个提供器声明在组件时,只对声明它的组件和子组件可见,其他组件不可见;当声明在模块的提供器与声明在组件的提供器具有相同 token 时,声明在组件的提供器会覆盖声明在模块的提供器;一般情况下,我们都应该在模块中声明提供器。

更多编程相关知识,请访问:编程视频!!

以上就是详解Angular中的依赖注入模式的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2714258.html

(0)
上一篇 2025年3月7日 21:32:23
下一篇 2025年3月1日 02:56:24

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 详解Angular中的模板语法

    本篇文章给大家详细介绍一下angular中的模板语法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 相关教程推荐:《angular教程》 插值表达式 test-interpolation.component.ts @Co…

    2025年3月7日
    200
  • 详解Angular中组件间通讯的几种方法

    本篇文章带大家详细了解一下angular中组件间通讯的几种。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 Angular 组件间的通讯 组件间三种典型关系: 父好组件之间的交互(@Input/@Output/模板变量/@…

    2025年3月7日
    200
  • 深入了解Angular组件中的生命周期钩子

    本篇文章带大家了解一下angular组件生命周期钩子。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 Angular 组件生命周期钩子 其中,红色标记的生命周期钩子只调用一次,绿色部分会被反复调用,执行顺序依次由上而下。 …

    2025年3月7日
    200
  • 深入了解Angular中的表单

    本篇文章给大家详细介绍一下angular中的表单。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 Angular 表单 什么是模板式表单 表单的数据模型是通过组件模板中的相关指令来定义的, 因为使用这种方式定义表单的数据模…

    2025年3月7日
    200
  • 详解Angular使用ControlValueAccessor实现自定义表单控件

    本篇文章给大家介绍一下angular使用controlvalueaccessor实现自定义表单控件的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 Angular: [ControlValueAccessor] 自定…

    2025年3月7日
    200
  • 详解Angular中自定义创建指令的方法

    本篇文章给大家介绍一下在 angular 中如何自定义创建指令。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 指令介绍 在 Angular 中有三种类型的指令: 组件,有模板的指令,组件是继承于指令的,只是扩展类与 UI…

    2025年3月7日
    200
  • 2021年值得尝试的7个Angular前端组件库,快来收藏吧!

    Angular 是一款能够跨 Web、移动 Web、移动应用、原生应用和桌面原生应用多个平台的前端框架,经过数十年的发展,已形成了一个庞大的生态,基于Angular的组件库也是多如牛毛。 2021年如果你想尝试 Angular 框架,以下 …

    2025年3月7日 编程技术
    200
  • 详解Angular中的模板输入变量(let-变量)

    本篇文章带大家了解一下angular中的模板输入变量(let-变量)。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 我这个人,写文章或者说心得,不喜欢直接抄官网上面的东西,实在是没啥意思。我还是喜欢用我的大白话来写文章。…

    2025年3月7日 编程技术
    200
  • 详解Angular中的组件交互

    本篇文章带大家详细介绍一下angular组件交互。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 Angular 组件交互 组件交互: 组件通讯,让两个或多个组件之间共享信息。使用场景: 当某个功能在多个组件中被使用到时,…

    2025年3月7日
    200
  • 浅谈angular中@、=、&指令的差异

    本篇文章带大家了解一下angular指令中@,=,&的区别。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 【相关推荐:《angular教程》】 当directive中的scope设置为一个对象的时候,该指令就有了…

    2025年3月7日
    200

发表回复

登录后才能评论