【发布时间】:2016-02-29 12:23:33
【问题描述】:
我需要一个使用服务单例作为 Angular 2 应用程序数据源的好例子。
场景如下:
我有一个应用程序正在从本地数据库(在我的例子中是 MongoDB)中加载某些商品的价格。 一些组件需要使用服务,该服务将成为整个应用程序中商品价格的通用真实来源。这些价格可以在外部执行:用户可以更改货币,因此必须重新计算,或者可以更改计算平均价格的日期范围。
所以我需要一个单例服务,该服务将在应用程序初始化时加载,并且组件仅在使用价格初始化服务数据存储后才需要加载价格。此外,当货币或日期范围发生变化时,组件需要刷新数据(我猜是使用 Observable 模式)。或许最好的方法是在app 组件中注入服务,让它首先被初始化?
这种应用程序是否有配方或建议的架构?
我不能使用ngOnInit() 从每个组件调用一些初始化函数,因为我希望数据在多个组件中可用。我需要知道每个组件何时使用服务数据存储中的数据对其进行初始化。我需要知道数据何时准备就绪。
我在 Angular 1.x 中的做法是实例化服务,并在构造函数中初始化数据,然后在初始化数据时,发出 $rootScope 事件告诉所有组件数据已准备好。
我在 Angular 2 中找不到合适的方法来做同样的事情。
【问题讨论】:
标签: service singleton angular observable