Angular 使用 Injector API 人工获取依赖注入的实例
发布日期:2021-06-30 14:49:02
浏览次数:2
分类:技术文章
本文共 1098 字,大约阅读时间需要 3 分钟。
这个例子的完整源代码:
import { Component, OnInit, Injectable, Injector } from '@angular/core';@Injectable()class UsefulService { constructor(){ console.log("Useful Service is created"); }}@Injectable()class NeedsService { constructor(public service: UsefulService) { console.log("NeedsService is created"); }}const injector = Injector.create({ providers: [{ provide: NeedsService, deps: [UsefulService] }, { provide: UsefulService, deps: [] }]});console.log(' true or false?' , injector.get(NeedsService).service instanceof UsefulService);@Component({ selector: 'manual_di', template: 'Manual DI
'})export class ManualDIComponent implements OnInit { constructor() { } ngOnInit(): void { }}
单步调试
Injector.create
由实现源代码可见,Angular NgModule providers 元数据支持 name 参数:
NeedsService 的依赖服务是 UsefulService,维护在 deps 数组里:
观察最后返回的 injector 实例里,到底包含了哪些数据:
injector records 属性包含了 Providers NeedsService 和 UsefulService 两条记录,但是 value 为空,因为是惰性加载。
直到应用代码显式调用 injector.get 获取 providers 实例时,hydration 才会发生:
本文全部源代码可以在这个 里找到。
更多Jerry的原创文章,尽在:“汪子熙”:
转载地址:https://jerry.blog.csdn.net/article/details/117475330 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年05月03日 01时18分08秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
字节缓冲流构造方法
2019-05-01
字节流复制视频
2019-05-01
字符流读数据的2种方式
2019-05-01
字符流复制Java文件
2019-05-01
字符流复制Java文件改进版
2019-05-01
类加载器【理解】
2019-05-01
其他数字摘要算法实现
2019-05-01
非对称加密算法
2019-05-01
公钥和私钥生成规则
2019-05-01
私钥加密私钥解密
2019-05-01
私钥加密公钥解密
2019-05-01
获取私钥key对象
2019-05-01
获取公钥对象
2019-05-01
什么是数字签名
2019-05-01
数字签名原理
2019-05-01
锁的释放流程-ReentrantLock.unlock
2019-05-01
锁的释放流程-ReentrantLock.tryRelease
2019-05-01
锁的释放流程-unparkSuccessor
2019-05-01
ConcurrentHashMap的源码分析-tryPresize
2019-05-01
生产者消费者的实际使用
2019-05-01