角度服务注入和导入对象文字之间的区别



我认为服务是一个文件或具有那些有用并与许多组件通信的功能的文件。因此,最终使这些功能成为中心,从而在所有这些组件中使用。

这些服务有什么特别之处,必须注入它们,同时我可以创建一个具有这些功能的对象文字并将它们导入组件中?

我仍然可以使用我导入的对象调用这些功能?

使用类类型并仅使用它完全有效。但是,Angular 中的依赖注入机制允许您实现相同的目标,但有一些额外的好处:

  • 实例可以是单例,可以根据位置限定范围 它们被声明(应用、模块、组件(
  • 您可以在 @Inject 构造函数参数中声明基类或接口(通过注入令牌(,然后配置将在模块配置中注入的类
  • 角度注入器在如何构建类实例和由注入器交付方面具有很大的灵活性
  • 您可以为测试注入与运行时不同的类,这使得模拟测试服务非常容易

为了重申注释的内容,服务的单个实例旨在跨多个组件/类使用。这就是使用依赖注入所做的。例如,如果您在服务中有一个由多个组件使用的待办事项数组,则此列表在所有组件中都是相同的,因此,如果将一个组件添加到列表中,则所有其他组件都将看到此更改的反映。

另一方面,导入对象文本对每个组件使用不同的实例。因此,在同一示例中,如果服务对象具有待办事项数组,则导入此对象的每个组件都将具有单独的待办事项列表,这些待办事项彼此之间没有任何关系。

希望这能澄清问题。

最新更新