angular2单身替代品

时间:2016-10-24 18:07:11

标签: angular singleton sharedservices

想象一下以下情况。 组件A更新服务A中的阵列A. 组件B在服务A中使用/读取阵列A. 如果我想要通知组件B ...当组件A更新数组时,我可以使用单例,但我的感觉......(来自C#+ MVVM背景)单例服务将是过度的,因为这只是这两个组件在应用程序中使用。

是否有替代方案,或者我应该继续创建单件服务?

感谢任何建议,

谢谢,

3 个答案:

答案 0 :(得分:2)

不,它根本不是矫枉过正,似乎是一个完全惯用的解决方案。

Angular2服务(通常)是单身人士。

我的理解是,如果你:

  • 使用@Injectable
  • 装饰您的服务
  • 将您的服务添加到providers[] in @NgModule
  • import您的服务进入您的组件

您应该共享该服务的相同单个实例。

如果您选择,您可以将服务声明为组件的提供商,方法是将其包含在@Component装饰器的provider[]列表中,为组件实例化服务的新实例。如果您希望在不共享状态的情况下提供功能,这将非常有用。

以下是关于此行为的信息性和快速写作:https://blog.budacode.com/2016/06/02/angular-2-services/

答案 1 :(得分:2)

如果数据在 ServiceA 中由 ComponentA 更新,并且 omponentB 使用/读取来自 serviceA only 的更新数组,您必须仅使用 singleton 服务,以便 ComponentA 和< strong> ComponentB 将使用 single instance ServiceA

因此, componentA SeviceA 所做的任何更新也将在 ComponentB < / strong>因为单个实例。

答案 2 :(得分:1)

使用服务将是“标准”Angular方法,正如msanford指出的那样,这完全没问题。 由于ng2非常灵活,您还可以采用其他方式,例如使用redux实现(如https://github.com/ngrx/store)。