想象一下下面的情况。组件 A 更新服务 A 中的数组 A。组件 B 使用/读取服务 A 中的数组 A。如果我想通知组件 B...当组件 A 更新数组时,我可以使用单例,但我的感觉。 ..(来自 C# + MVVM 背景)单例服务将是矫枉过正,因为这仅由应用程序中的这两个组件使用。
是否有替代方案,或者我应该继续创建单例服务?
任何建议表示赞赏,
谢谢,
想象一下下面的情况。组件 A 更新服务 A 中的数组 A。组件 B 使用/读取服务 A 中的数组 A。如果我想通知组件 B...当组件 A 更新数组时,我可以使用单例,但我的感觉。 ..(来自 C# + MVVM 背景)单例服务将是矫枉过正,因为这仅由应用程序中的这两个组件使用。
是否有替代方案,或者我应该继续创建单例服务?
任何建议表示赞赏,
谢谢,
不,这根本不是矫枉过正,而且似乎是一个完美的惯用解决方案。
Angular2 服务(通常)是单例的。
我的理解是,如果您:
@Injectable
providers[]
@NgModule 中,import
你的服务到你的组件中您应该共享该服务的相同的单个实例。
如果您愿意,您可以通过将 Service包含在装饰器列表中来将Service 声明为组件的提供者,这将为组件实例化 Service 的新实例。如果您希望在不共享状态的情况下提供功能,这很有用。@Component
provider[]
这是关于这种行为的内容丰富且有趣的文章:https ://blog.budacode.com/2016/06/02/angular-2-services/
如果数组由 更新ServiceA
并ComponentA
使用omponentB
/读取更新的数组serviceA only
,您必须仅使用服务,singleton
以便使用/共享。ComponentA
ComponentB
single instance
ServiceA
因此,由于单实例, componentA
to所做的任何更新SeviceA
也将可用。ComponentB
使用服务将是“标准” Angular 方法,正如 msanford 指出的那样,这完全没问题。由于 ng2 非常灵活,您还可以采用其他方式,例如使用 redux 实现(例如https://github.com/ngrx/store)。