首页 > 解决方案 > Javascript中任意参数顺序构造调用的实现

问题描述

我是 angular/js/ts 的新手,我试图弄清楚依赖注入是如何在 angular 中工作的。

到目前为止,很多事情都很清楚,但我不明白 angular 如何调用组件构造函数并注入依赖项,而不知道它们在构造函数定义中定义的顺序。

只是为了有一个上下文。以Angular.io 入门示例的这个简单修改为例。

当我定义组件的构造函数时,product-list.component.ts我可以使用这两个构造函数定义并且一切正常。

//definition 1
constructor(s2: S2Service, s1: S1Service){
    s1.log();
    s2.log();
  }
//definition 2
constructor(s1: S1Service, s2: S2Service){
    s1.log();
    s2.log();
  }

框架如何知道我定义组件构造函数的顺序?Angular 如何调用这个构造函数?

如果你想要一个更简单的例子。假设我们要定义一个类,其构造函数带有 4 个参数(具有 4 种不同的类型)。我们如何编写构造函数,以便可以在不定义多个(24?(不确定)?)构造函数定义的情况下以每个可能的顺序获取 4 个参数,并且不使用命名参数或某种对象封装,就像 Angular 框架一样?

标签: javascriptangulartypescriptdependency-injection

解决方案


按类型。它需要注入的类型并在构造函数 args 中查找该类型。


推荐阅读