Angular 依赖注入 UseClass 和 UseExisting 的区别
生活随笔
收集整理的這篇文章主要介紹了
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 的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 保险分为哪几种类型 保险种类
- 下一篇: LOL2022HLE战队选手都有谁 HL