Angular 6中服务类和TypeScript类的区别

3
我需要清楚地了解Angular中的服务类。在我看来,服务类和TypeScript类是相同的用例,那么两者之间有什么区别呢?

1
Angular文档开始(也可以参考该页面上的第一个示例)。阅读后,您还有什么不理解的地方吗?在Angular定义中,您是否仍有关于服务的具体问题? - Igor
服务类:我们在服务类中进行逻辑编码,并使用构造函数在组件类中导入服务并使用服务类实例。TypeScript类:我们在TypeScript类中进行逻辑编码,然后在组件类中导入并使用TypeScript类实例。那么这两者之间有什么区别呢?它们似乎是相同的,那么为什么Angular将服务视为特殊的? - Vijay VJ
1
从 Angular 视角来看,它是同样的东西。你可以将服务视为一个普通类,它通过 DI(依赖注入)提供和使用。但它仍然只是一个基本的类。 - miselking
请定义您所说的Typescript类是什么?这对我来说没有意义,就好像您在强调它是用Typescript编写的类一样具有某种神奇的重要性。 - David Barker
1个回答

3

如果实现所有的angular服务、组件、模块、管道...,它们只是typescript类,每个类之间唯一的区别在于装饰器,但是如果某个服务没有依赖项,则可能没有装饰器。

最后,要将任何类声明为服务,您需要将此类添加到任何提供程序列表中,以用于模块或组件,以便注入。

因此,只需查找类装饰器,以及该类是否已添加到任何提供程序列表中即可。


Translated:

服务类:我们在服务类中进行逻辑编码,并使用构造函数将服务导入到组件类中,并使用服务类实例。 TypeScript类:我们在TypeScript类中进行逻辑编码,并在组件类中导入并使用TypeScript类实例。那么这两者之间有什么区别?它们看起来都是相同的,那么为什么Angular将服务视为特殊的呢? - Vijay VJ
1
如果你比较一个简单的类没有依赖关系,那么它是正确的。但是如果这个类(服务)有依赖性,你将不得不传递所有的依赖关系,例如一个服务依赖于带有Angular DI系统的HttpClinet,Angular将创建HttpCleint的实例并将此依赖关系传递给服务并创建服务。通常一些服务会有多个依赖关系,这是使用DI的巨大好处。 - Muhammed Albarmavi
1
将任何类添加到根级提供程序列表中,使该服务成为单例,这意味着此服务只会创建一次。此外,服务是 Angular DI 的粘合剂,希望我已经给出了清晰的解释。@VijayVJ - Muhammed Albarmavi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接