@Inject与@Injectable
在Angular框架中,经常会使用到@Inject与@Injectable这两个装饰器。它们与框架的依赖注入系统息息相关。
什么是Angular Injector
Injector,注入器。主要工作是负责向服务与组件、指令等注入依赖。Injector主要通过Angular provider中的token进行查找需要注入的依赖。Angular Provider中提供了依赖的相关信息,比如token,创建实例的方式等。Injector通过这些信息进行创建实例,并负责把实例注入到服务、组件、指令中。
什么时候创建Angular Injector
首先,在根模块启动的时候会创建一个注入器,此时这个注入器作用于全局。整个应用会创建一棵组件树,appcomponent为根组件。同样,injector也会配合创建注入器树,为每个组件维护需要注入的内容。
怎么注册需要注入的依赖
可以使用Providers,具体使用provide:[Aservice,Bservice],复杂一点的如providers:[{provide:xxx,useValue:xxx}],还可以useClass,useFactory,以及depths等。这里不再具体展开。
@Injectable
@Injectable装饰器是告诉Angular框架,这个服务或者组件的构造函数的参数需要依赖注入器进行注入。所以如果构造函数中没有参数,可以无需@Injectable装饰器。组件和指令为什么没有@Injetable也能注入构造函数中的参数?因为@Component和@Directive装饰器也具备告知框架构造函数参数需要依赖注入,所以无需再组件、指令中使用@Injectable装饰器。
@Inject
@Inject是构造函数参数的注入器。@Inject(token) private ualue:ValueType,它告诉Angular框架需要从注入器中获取token对应的一个实例进行注入。所以如果我们在一个服务中的构造函数中依赖注入参数,也可以不使用@Injectable装饰器,可以直接在参数中使用@Inject(Aservice) private aService: Aservice进行注入。
@Inject与@Injectable相关推荐
- @javax.inject.Inject,新的注入依赖规范
这个是 Java EE 6 规范 JSR 330 – Dependency Injection for Java 中的东西,也就是 Java EE 的依赖注入. Spring自带的@Autowired ...
- Angular 小专题:玩转注射器
课程介绍 2009 年 AngularJS 第一个把"依赖注入"机制引入到了前端开发中,开创了用后端设计思想大规模入侵前端领域的先河. 如果没有深入使用过 Spring 框架,&q ...
- Eclipse Theia 揭秘之启动流程篇
前言 在<Eclipse Theia 框架技术架构揭秘>一文中简单介绍了 Theia 框架整体的技术架构,接下来将通过系列文章从源码角度入手看一下 Theia 核心设计思路,本文从启动流程 ...
- NestJs学习总结篇
原文地址 http://blog.poetries.top/2022/05/25/nest-summary Nest (NestJS) 是一个用于构建高效.可扩展的 Node.js 服务器端应用程序的 ...
- Unable to inject views for BcFragment{8d4c0 #1 id=0x7f0d00a1}
这个问题一般都是插入错误引起的, 当提示 ButterKnife.inject(this,sellerLayout); 这行的时候你需要查看 @InjectView(R.id....) 插入的对不对 ...
- Vue子组件调用父组件方法并传参的5种方式:$emit触发、传入子组件function、访问父组件$parent.function、用inject关联父组件provide的方法、用window.fun
如需了解老子怎么控制儿子的,传送门:https://s-z-q.blog.csdn.net/article/details/119922715 子组件child.vue <template> ...
- provide和inject,Vue父组件直接给孙子组件传值
Provide / Inject 该页面假设你已经阅读过了组件基础.如果你还对组件不太了解,推荐你先阅读它. 通常,当我们需要从父组件向子组件传递数据时,我们使用 props.想象一下这样的结构:有一 ...
- Mobx入门之三:Provider inject
2019独角兽企业重金招聘Python工程师标准>>> 上一节中<App/>组件传递状态temperatures给children -- <TemperatureI ...
- Webpack 的 HtmlWebpackPlugin 如何控制某个 chunks 的 inject 位置?
https://segmentfault.com/q/1010000006591131 通过修改 HtmlWebpackPlugin 源码实现了 修改后的配置: new HtmlWebpackPlug ...
最新文章
- 重新启动Office 365迁移任务
- linux sockaddr_in头文件,linux网络编程常用头文件
- ItChat与图灵机器人的结合
- 深入浅出LVS:企业集群平台负载均衡的三种模式和算法实现
- 让网站性能最佳的34条黄金守则
- MySQL实战 | 01 当执行一条 select 语句时,MySQL 到底做了啥?
- hdu 1559 最大子矩阵(DP)
- C++11 double转化为string
- 在Windows下启动java服务
- cc1101 使用笔记
- mui如何对接java后台_MUI框架-09-MUI 与后台数据交互
- 24节气—小雪海报、文案分享。雨凝成雪,万物冬藏。
- 【数字信号处理】基本序列 ( 复指数序列 | 单位复指数序列 | 复变函数欧拉公式 )
- android 阻尼回弹,Android ListView实现阻尼回弹效果 并去除边缘阴影
- 前端自学驿站:【建议收藏】css晦涩难懂的点都在这啦
- 唐读笔记-正则表达式必知必会
- memcpy、memmove、memcmp、memset函数的使用说明和模拟实现
- CSP 2022 游寄
- 如何成为一个更好的Android开发者?写给正在求职的安卓开发
- 黑苹果引导工具 Clover 配置详解及Clover Configurator使用