【问题标题】:How Angular dependency injection mechanism does work?Angular 依赖注入机制是如何工作的?
【发布时间】:2021-07-02 10:21:42
【问题描述】:

我正在尝试了解 Angular/NestJs 依赖注入背后的机制。

当一个 Typescript 类被构建时,它的参数类型会丢失。示例:

type Dependency1 = {};
type Dependency2 = {};

class X {
    constructor(dependency: Dependency1){}
}

成为

"use strict";
class X {
    constructor(dependency) { }
}

Angular Injector 如何将 dependency 参数替换为 Dependency 类的正确实例?

【问题讨论】:

  • 角度编译器读取此类型并将注入令牌添加到类元数据中,然后从适当的注入器请求此令牌以获取该令牌提供的实例。
  • @Andrei 这意味着角度编译器将我的组件作为字符串读取(在将其转换为 js 文件之前),并为我的组件的每个参数在我的组件类中的元数据类中添加一个注入令牌构造函数。

标签: angular typescript dependency-injection nestjs


【解决方案1】:

如果 Angular 类似于 Nest 的 DI 分辨率(应该类似,Nest 是受 Angular 启发的),那么如果函数的名称(即类的名称)则使用什么。由于类是 JavaScript 中的函数,并且所有函数都有一个 .name 属性,这就是用于获取注入令牌并针对相同令牌(相同类或自定义提供程序)检查模块容器的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-08
    • 2014-01-09
    • 2011-02-04
    • 1970-01-01
    • 2015-06-15
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多