Angular 依赖注入 useClass 的实例创建位置
用@NgModule在providers定义了MyService token用useClass来提供:
MyNewService的初始化过程:
InjectionToken:
this.records: 一个巨大的map,key为injection token,
value的数据结构如下图所示:
useClass的实例化,在代码17207的record.factory方法调用里进行:
值提供者:useValue
useValue 键让你可以为 DI 令牌关联一个固定的值。 使用该技巧来进行运行期常量设置,比如网站的基础地址和功能标志等。 你也可以在单元测试中使用值提供者,来用一个 Mock 数据来代替一个生产环境下的数据服务。
一个值-提供者的值必须在指定之前定义。
这一点和其他类型的提供者不同。
其它类型的提供者都会惰性创建它们的值,也就是说只在需要注入它们的时候才创建。
类提供者:useClass
useClass 提供的键让你可以创建并返回指定类的新实例。
你可以使用这类提供者来为公共类或默认类换上一个替代实现。比如,这个替代实现可以实现一种不同的策略来扩展默认类,或在测试环境中模拟真实类的行为。
useClass 在 SAP Spartacus 里的用法举例:
{ provide: LoggerService, useClass: DateLoggerService }
提供者使用 DateLoggerService 来满足 LoggerService。该 LoggerService 在 AppComponent 级别已经被注册。当这个组件要求 LoggerService 的时候,它得到的却是 DateLoggerService 服务的实例。
这个组件及其子组件会得到 DateLoggerService 实例。这个组件树之外的组件得到的仍是 LoggerService 实例。
更多Jerry的原创文章,尽在:“汪子熙”:
Angular 依赖注入 useClass 的实例创建位置相关推荐
- factorybean 代理类不能按照类型注入_彻底搞懂依赖注入(一)Bean实例创建过程
点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 上一章介绍了Bean的加载过程(IOC初始化过程),加载完成后,紧接着就要用到它的依赖注入 ...
- Angular 依赖注入 UseClass 和 UseExisting 的区别
例子: import { Injectable } from '@angular/core';let count = 0;@Injectable() export class MyService {s ...
- Angular 依赖注入 UseClass 和 UseExisting 的区别 - 一个实际的测试例子
例子: import { Injectable } from '@angular/core';let count = 0;@Injectable() export class MyService {s ...
- Angular 依赖注入的学习笔记
Angular官方文档 Specifying a provider token If you specify the service class as the provider token, the ...
- angular依赖注入_Angular依赖注入简介
angular依赖注入 by Neeraj Dana 由Neeraj Dana In this article, we will see how the dependency injection of ...
- Angular 依赖注入学习笔记之工厂函数的用法
网址:https://angular.institute/di We can transfer any data through our apps, transform it and replace ...
- Angular 依赖注入
问题描述 初学Angular,可能对一堆注解有些懵. 我们一起通过实例来探讨Angular的依赖注入. 一路尝试 @Injectable 一个命令建的StockService,一个手动建的TestSe ...
- Angular依赖注入的一个例子和注入原理单步调试
定义一个抽象服务类: export abstract class GreetingService {abstract greet(name: string): string;} 定义一个具体类实现该抽 ...
- 【Spring 工厂】反转控制与依赖注入、Spring工厂创建复杂对象3种方式
反转控制与依赖注入 反转控制 与 依赖注入 反转控制(IOC Inverse of Control) 依赖注入 (Dependency Injection - DI) Spring工厂创建复杂对象(3 ...
最新文章
- Linux脚本关联,shell数组和关联数组
- leetCode C++ 49. 字母异位词分组 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
- 重温强化学习之无模型学习方法:时间差分方法
- C语言实现跳转搜索jump search算法(附完整源码)
- 区块链浏览器_欧科云链OKLink区块链浏览器,如何挖掘数据背后的价值?
- jQuery的对象访问函数(get,index,size,each)
- 腾讯云多媒体文件处理总结
- css插件载进去ps里面,CSS3Ps(ps图层插件)官方版
- uniapp-手写三级地区选择实现
- Swift 网络请求Moya框架简单二次封装
- 试分析培正强智教务系统选课卡顿的原因
- 【uni-app】uni-app-微信小程序项目笔记
- win7连接网络打印机需要输入网络密码,怎么办
- Sicily 1001. Alphacode
- Qt TableView的简单使用
- 招投标法、合同法、采购法
- 数据结构算法之子集树
- css鼠标滑过按钮出现flash闪光效果
- 【20181027T1】洛阳怀【推结论+线性筛+分解质因数+GCD性质】
- 卡巴斯基简体中文版相关QA(ZT)