【发布时间】:2017-12-11 04:47:55
【问题描述】:
我以为我了解 Angular 模块,但在找出构建涉及由库提供的服务和组件的模块的最佳方法时遇到了麻烦。
该库实现了一个NotificationsComponent,它依赖于一个NotificationsService,它需要是一个单例,因为它保留了通知信息。消费者希望在各个页面中使用NotificationsComponent,其中一些在AdminPagesModules 内,而另一些在BookPagesModule 内。
假设在库中我定义了一个NotificationsModule,它“声明”并且
“出口”NotificationsComponent,并“提供”NotificationsService。现在,如果我将此模块导入AdminPagesModule 和BookPagesModules,以便这些模块中的页面可以使用NotificationComponent,我会得到NotificationsService 的单独实例,这将不起作用。另一方面,如果我在我的AppModule 中导入NotificationsModule,我成功确保NotificationsService 是整个应用程序中使用的单例,但我看不到NotificationsComponent 在各个功能模块内的组件中,例如AdminPagesModule.
我见过一种模式,其中一个模块导入另一个模块,然后重新导出它。在这种情况下,我们将在AppModule 中导入NotificationsModule,然后重新导出它,然后在AdminPagesModule 中再次导入NotificationsModule。在这种情况下,NotificationsService 是否会像我想要的那样在整个应用程序中成为单例,但 NotificationsComponent 仍可用于AdminPagesModule 内的组件?
或者是否有解决这个问题的方法涉及SharedModule 模式?
【问题讨论】: