Angular 使用 Injector API 人工获取依赖注入的实例
生活随笔
收集整理的這篇文章主要介紹了
Angular 使用 Injector API 人工获取依赖注入的实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這個例子的完整源代碼:
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: '<p>Manual DI </p>' }) 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 才會發生:
本文全部源代碼可以在這個 commit 里找到。
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的Angular 使用 Injector API 人工获取依赖注入的实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flash如何制作翻书动画效果的个性相册
- 下一篇: SAP UI5 XML 视图里 labe