最佳答案
在 Angular 1.x.x 中,只需要请求相同的服务,就可以得到相同的实例,从而可以共享服务中的数据。
现在在角度2中,我有一个组件,它有一个对我的服务的引用。我可以读取和修改服务中的数据,这很好。当我尝试在另一个组件中注入相同的服务时,似乎得到了一个新的实例。
我做错了什么?是模式本身错了(使用服务来共享数据)还是我需要将服务标记为单例(在应用程序的一个实例中)或其他什么?
顺便说一下,我在 2.0.0-alpha.27/
频道
我在 @Component
注释中通过 appInjector
(编辑: 现在是 providers
)注入一个服务,然后在构造函数中保存一个引用。它在组件中本地工作——只是不像我想的那样跨组件(它们不共享相同的服务实例)。
更新 : 从 Angular 2.0.0开始,我们现在有了@ngModule,您可以在该 @ngModule
上的 providers
属性下定义服务。这将确保将该服务的相同实例传递给该模块中的每个组件、服务等。
Https://angular.io/docs/ts/latest/guide/ngmodule.html#providers
更新 : 一般来说,角度和 FE 的发展已经发生了很多变化。正如@noririco 提到的,你也可以使用像 NgRx 这样的状态管理系统: Https://ngrx.io/