angular2单例替代
angular2 singleton alternative
想象一下下面的情况。
组件 A 更新服务 A 中的数组 A。
组件 B uses/reads 服务 A 中的数组 A。
如果我想让组件 B 得到通知......当组件 A 更新数组时,我可以使用单例,但我的感觉......(来自 C# + MVVM 背景)单例服务会矫枉过正,因为这只是由应用程序中的这 2 个组件使用。
是否有替代方案,或者我应该继续创建单例服务?
如有任何建议,我们将不胜感激,
谢谢,
不,它一点也不矫枉过正,而且看起来是一个完美的惯用解决方案。
Angular2 服务(通常)是单例。
据我了解,如果您:
- 用
@Injectable
装饰您的服务
- 将您的服务添加到
providers[]
in @NgModule,
import
您的服务到您的组件
您应该共享该服务的同一个实例。
如果您愿意,您可以通过将服务包含在 @Component
装饰器的 provider[]
列表中,将服务声明为组件的 提供者 ,这将为组件实例化服务的 新实例。如果您希望在不共享状态的情况下提供功能,这将很有用。
这是一篇关于此行为的信息丰富且愉快的文章:https://blog.budacode.com/2016/06/02/angular-2-services/
如果数组在 ServiceA
中由 ComponentA
和 omponentB
uses/reads 从 serviceA only
更新的数组,你必须使用 singleton
服务,以便 ComponentA
和 ComponentB
将 use/share single instance
ServiceA
。
因此 componentA
到 SeviceA
所做的任何更新也将可用在 ComponentB
因为单个实例。
使用服务将是 "standard" Angular 的方法,正如 msanford 指出的那样,这完全没问题。
由于 ng2 非常灵活,您还可以采用其他方式,例如使用 redux 实现(例如 https://github.com/ngrx/store)。
想象一下下面的情况。 组件 A 更新服务 A 中的数组 A。 组件 B uses/reads 服务 A 中的数组 A。 如果我想让组件 B 得到通知......当组件 A 更新数组时,我可以使用单例,但我的感觉......(来自 C# + MVVM 背景)单例服务会矫枉过正,因为这只是由应用程序中的这 2 个组件使用。
是否有替代方案,或者我应该继续创建单例服务?
如有任何建议,我们将不胜感激,
谢谢,
不,它一点也不矫枉过正,而且看起来是一个完美的惯用解决方案。
Angular2 服务(通常)是单例。
据我了解,如果您:
- 用
@Injectable
装饰您的服务
- 将您的服务添加到
providers[]
in @NgModule, import
您的服务到您的组件
您应该共享该服务的同一个实例。
如果您愿意,您可以通过将服务包含在 @Component
装饰器的 provider[]
列表中,将服务声明为组件的 提供者 ,这将为组件实例化服务的 新实例。如果您希望在不共享状态的情况下提供功能,这将很有用。
这是一篇关于此行为的信息丰富且愉快的文章:https://blog.budacode.com/2016/06/02/angular-2-services/
如果数组在 ServiceA
中由 ComponentA
和 omponentB
uses/reads 从 serviceA only
更新的数组,你必须使用 singleton
服务,以便 ComponentA
和 ComponentB
将 use/share single instance
ServiceA
。
因此 componentA
到 SeviceA
所做的任何更新也将可用在 ComponentB
因为单个实例。
使用服务将是 "standard" Angular 的方法,正如 msanford 指出的那样,这完全没问题。 由于 ng2 非常灵活,您还可以采用其他方式,例如使用 redux 实现(例如 https://github.com/ngrx/store)。