Angular 依赖注入 UseClass 和 UseExisting 的区别
例子:
import { Injectable } from '@angular/core';let count = 0;@Injectable()
export class MyService {seed: number;_count: number;constructor(){this.seed = Number((Math.random() * 100).toFixed(0));this._count = count++;console.log('diablo constructor called: ' + this.seed);}
}
Service构造函数的断点只触发了一次:
这个单例行为在Angular DI帮助文档里有提到:
https://angular.io/guide/glossary#injector
什么时候会失去单例的特性呢?看这个例子:
import { Injectable } from '@angular/core';@Injectable()
export class MyService {seed: number;constructor(){this.seed = Number((Math.random() * 100).toFixed(0));console.log('diablo constructor called: ' + this.seed);}
}@Injectable()
export class MyNewService {seed: number;text: 'NewService';constructor(){this.seed = Number((Math.random() * 100).toFixed(0));console.log('diablo constructor called: ' + this.seed);}
}
NgModule里的定义:
表面上看,请求MyService时,也使用MyNewService进行类的实例化,似乎我们会得到MyNewService的单例。
constructor(old: MyService, newS: MyService) {this.test();console.log('ok');}
其实不然,测试发现:我们得到了两个不同的MyNewService实例:
根据token(MyService)拿到factory(MyNewService_Factory):
第二次触发,token变成了MyNewService:
用了useExisting之后的效果:
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
Angular 依赖注入 UseClass 和 UseExisting 的区别相关推荐
- Angular 依赖注入 UseClass 和 UseExisting 的区别 - 一个实际的测试例子
例子: import { Injectable } from '@angular/core';let count = 0;@Injectable() export class MyService {s ...
- Angular 依赖注入 useClass 的实例创建位置
用@NgModule在providers定义了MyService token用useClass来提供: MyNewService的初始化过程: InjectionToken: this.records ...
- 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 ...
- 马丁 福勒 Martin Fowler 关于依赖注入和反转控制的区别
马丁 福勒 Martin Fowler 关于依赖注入和反转控制的区别 http://martinfowler.com/articles/injection.html 中文翻译:http://files ...
- 依赖注入和反转控制的区别
依赖注入和反转控制的区别 写在前面,这篇文章是一个外国人写的,我还没有翻译过来,怕自己忘了,先粘到csdn上面. 原来文章的地址 One of the entertaining things abou ...
- Angular 依赖注入
问题描述 初学Angular,可能对一堆注解有些懵. 我们一起通过实例来探讨Angular的依赖注入. 一路尝试 @Injectable 一个命令建的StockService,一个手动建的TestSe ...
- Angular依赖注入的一个例子和注入原理单步调试
定义一个抽象服务类: export abstract class GreetingService {abstract greet(name: string): string;} 定义一个具体类实现该抽 ...
最新文章
- java 打电话_第四十二篇----拨打电话
- android毛玻璃效果,Android 中实现毛玻璃效果
- 018 Android加固之实现dex加载器
- 关于编写性能高效的javascript事件的技术
- git 提交修改到github上
- python中DictVectorizer的使用
- Vue中定义全局变量与常量的各种方式详解_vue.js_脚本之家
- 如何摆脱「技术思维」的惯性?
- 阿里云发布vSphere虚拟机备份服务 ,网络带宽有限条件下依然能有效保护数据
- 碾压专业机构,27岁华裔小伙推出美国最准新冠预测模型
- python 内置函数_python的内置函数、方法
- mysql gtid坑_数据库mysqldump的坑
- Ksplice:不再重启你的Linux
- 程序员的一种境界【转的】
- 本地音乐播放器+android8.1,APlayer v1.5.6.8-15681 安卓本地音乐播放器 | 智享阁
- mysql ipv4转ipv6_从IPv4到IPv6过渡
- Mybatis多表关联查询之三表查询
- Vue指令之列表渲染
- 数字藏品指南系列第五篇:验证智能合约
- 百度测试实习面试记录