我找到的所有例子,都注入了这样的服务:
export class TestComponent {
constructor(
private dataService: DataService,
private dataService2: DataService2,
private dataService3: DataService3,
// ...
// ...
// ...
// ...
// ...
// ...
// ...
) {
// Do something
}
}
但是,如果您注入多个服务并使用构造函数方法初始化某些内容,则此列表会变得非常长且令人困惑。
所以问题是:
我可以选择性地写这个吗?
export class TestComponent {
private dataService = new DataService();
private dataService2 = new DataService2();
private dataService3 = new DataService3();
constructor() {
// Do something
}
}
答案 0 :(得分:1)
这取决于您的服务需要做什么。
如果它只是一堆有用的方法,你可以做到,但是在你写这样的事情private dataService = new DataService();
的每一个组件中,你都会获得新的服务实例。
另一方面,在我的工作中,我们经常使用服务作为数据存储,从中查询内容,使用此new
关键字,您将实例化它,并且不会获取从中传递的任何数据另一个组成部分。
无论如何DI是Angular生态系统的重要组成部分。因此,您可以将它声明为模块上的提供程序(在此之前将您的组件分开依赖于某个模块),这些模块实际上正在使用它们将其数量降低到应用程序模块中。 因为如果你把很多东西注入1个组件构造函数中更好地分离一些功能,因为它可能变得非常难看。