想象一下以下情况。 组件A更新服务A中的阵列A. 组件B在服务A中使用/读取阵列A. 如果我想要通知组件B ...当组件A更新数组时,我可以使用单例,但我的感觉......(来自C#+ MVVM背景)单例服务将是过度的,因为这只是这两个组件在应用程序中使用。
是否有替代方案,或者我应该继续创建单件服务?
感谢任何建议,
谢谢,
答案 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)。