【发布时间】:2020-04-18 04:17:44
【问题描述】:
我现在使用 Angular2/4 几个月了,但我仍然无法弄清楚这两种方法之间有什么区别,以及关于依赖注入我应该使用哪一种
你能帮帮我吗?
第一种方法:通过构造函数
...
constructor(
private myService: MyService
) {
// this.myService.myMethod() ...
}
...
和
第二种方法:通过注射器
...
private myService: MyService;
constructor(
injector: Injector
) {
this.myService = injector.get(MyService);
// this.myService.myMethod() ...
}
...
我了解每种方法的作用,但我无法找出最佳实践。
我知道这可能是一种主观意见,但我认为两者各有利弊。
感谢您的任何解释。
【问题讨论】:
-
你的第二种方法有both;注入器是通过构造函数注入提供的。另请注意,文档告诉您:angular.io/guide/…
-
我不是 DI 专家,但在第一种方法中,当我们创建
component实例时,通过检查constructor参数来查找this组件所需的依赖项。这在许多情况下都很好,但在第二种方法中,您注入整个DI Container,其中包括所有服务,但并非在所有情况下都需要。请检查此link -
@jonrsharpe。谢谢,您的链接很有帮助。
-
@N.HariHaraSudhan :谢谢,我不确定它是否有真正的区别,因为一切都是通过引用传递的,不是吗?但我认为你是对的:第一种方法更好......仅仅是因为,观察构造函数,你可以快速判断需要哪些依赖项。
标签: angular dependency-injection