-1

我实际上正在研究 Angular 2,我想知道团队如何处理他们组件中的依赖注入?

解释

似乎Ng2是基于ES7装饰器通过typescript. 实际上,启动类装饰器(我的意思是装饰器的代码)仅在类被实例化时才被解释。

那么,团队如何处理组件/服务注入?

例子

从文档中查看此代码:

class AComponent {
  constructor(@Inject(MyService) aService:MyService) {}
}

注入是在调用类的构造函数时进行的。这意味着 MyService 有一个特定的装饰器/特定的元数据(如@Injectable),允许他被注入没有?

在这种情况下,这意味着有一个服务注册表,可以通过@Inject注释访问它们的列表。

但这意味着框架能够在运行时创建和加载这个存储库(这是重要的词),这与装饰器调用不匹配(在类注释的实例化中)?

这是否意味着每个可注入的组件/服务至少被实例化一次?或者它是否存在在运行时注入或执行一些装饰器来填充服务注册表/容器的其他东西?

感谢提前

4

1 回答 1

2

事实上,类装饰器是“启动”(我的意思是,装饰器的代码)只有在类被实例化时才会被解释。

喷油器是的。但是Component不,这就是您缺少的一块拼图。

declare var Component: any;
declare var Inject: any;
declare type MyService = any;
declare var MyService: any;

@Component
class AComponent {
  constructor(@Inject(MyService) aService:MyService) {}
}

@Component 调用将在definition时间进行。这将允许 angular 注册组件。当有人要求该组件时,构造函数 @Inject 将执行,因此角度 DI 将启动。

于 2015-05-28T01:03:36.223 回答