javascript - 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 框架一样?
解决方案
按类型。它需要注入的类型并在构造函数 args 中查找该类型。
推荐阅读
- windows - Delphi 和 Lazarus 中主菜单的不同视图
- reactjs - 意外的令牌,应为“;” 在渲染()
- android - 如何获取 Nativescript angular modal 的原生视图窗口的参考?
- switch-statement - 使用 Switch 和 JOptionPane
- vb.net - 检查访问数据库 vb.net
- javascript - 使用动态键和非动态创建动态对象
- jquery - 使用 kendo UI 绘制垂直折线图
- azure-ad-b2c - Azure B2C 自定义登录旅程 - 首先捕获电子邮件
- c++ - 为什么在循环中调用 std::getline 后 C++ fstream 需要调用 clear()
- c# - 为什么不需要自定义中间件来实现接口或从 asp.net core 3 中的基类派生?