我正在使用angular2编写一个Ionic应用程序 - 让我们以MasterDetail模式为例:
MasterPage
是显示列表的组件。
DetailPage
是一个显示列表中单个项目的组件。
ListService
是一项服务,其中包含要为MasterPage
和DetailPage
共享的单个列表的数据,因此应用于单个项目(例如编辑)的所有更改都将更新{{ 1}}。
但是如果我有MasterPage
的多个实例怎么办?让我说我有MasterPage
个菜单项我可以打开来自。的列表。
所以我的导航可能是这样的:
MenuPage
- > MenuPage
- > MasterPage
- > DetailPage
(来自标题上的菜单按钮) - >第二个MenuPage
显示不同的列表。
我如何拥有<{strong> MasterPage
的多个实例,其中每组ListService
- MasterPage
共享一个实例?
答案 0 :(得分:1)
如果您在@NgModule(...)
AppModule
中提供服务,则会获得整个应用程序的单个实例。
如果您在@Component(...)
中提供服务,那么每个组件实例都将获得自己的服务实例并与其子代共享。
组件上的提供程序覆盖AppModule
上的提供程序和父组件上的提供程序,以及组件本身及其子组件。
每个提供商始终有一个实例。如果将提供程序添加到组件中,则此提供程序的实例将与该组件的实例一样多。