Angular2的单例替代方案



想象以下情况。组件A更新服务A中的数组A。组件B使用/读取服务A中的阵列A。如果我想通知组件B…当组件A更新数组时,我可以使用单例,但我的感觉……(来自c# + MVVM背景)单例服务将是多余的,因为它只被应用程序中的那两个组件使用。

是否有其他选择,或者我应该直接创建一个单例服务?

任何建议都很感谢,

谢谢你,

不,这一点也不过分,而且似乎是一个完美的惯用解决方案。

Angular2的服务(通常)是单例的。

我的理解是如果你:

  • @Injectable装饰您的服务
  • 将你的服务添加到@NgModule中的providers[]
  • import您的服务到您的组件

你应该共享同一个Service的单个实例。

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

这里有一篇关于这种行为的有趣的文章:https://blog.budacode.com/2016/06/02/angular-2-services/

如果数组在 ServiceA 中被 ComponentA omponentB serviceA only 中使用/读取更新后的数组,则必须只使用 singleton 服务,以便 ComponentA ComponentB 将使用/共享 ServiceA single instance

因此,由于单个实例, componentA SeviceA 的任何更新也将在 ComponentB 中可用。

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

相关内容

  • 没有找到相关文章

最新更新