角度服务注入和导入对象的区别

时间:2017-07-29 01:01:42

标签: angular typescript

我是打字稿,角度2和一个我无法理解的问题的新手。我对服务的看法是具有许多组件有用且通用的功能的文件。因此,最终使这些功能成为核心,从而在所有这些组件中使用。

所以我的问题是,当我可以创建具有功能的对象文字并在组件中导入它们时,必须注入这些服务的一些特殊内容。我仍然可以使用我导入的对象来调用这些功能。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:-1)

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

另一方面,导入对象文字对每个组件使用不同的实例。因此,在同一示例中,如果服务对象具有一系列待办事项,则导入此对象的每个组件都将具有单独的待办事项列表,这些事项绝不会相互关联。

希望澄清这个问题。