页眉,页脚和侧栏组件位于共享 - >组件下。 Header和SideBar组件导入服务SideBarService(在Shared文件夹下)。当用户单击Header组件中的侧栏图标时,SidebarService用于切换应用于Sidebar组件的类。
我的问题是:根据Angular 5应用程序架构,Header,Footer和Sidebar应该放在共享还是核心模块中。由于我的应用程序具有延迟加载的模块,将来是否会引起问题,例如,如果一个惰性模块,例如Admin使用侧边栏服务在侧边栏中进行更改,这个更改是否会对其他延迟加载的模块可见?
我认为你最好将它们放在核心模块中,因为我们只会加载它一次。所有其他模块将在路由器插座中加载。您可以在其中放置任何共享组件,如ConfirmBox,AlertBox,如小部件。无论如何,我们正在从服务访问这些组件。
无论如何,核心模块不应该依赖于其他模块,其他模块可以依赖于核心模块。
SharedModule
和CoreModule
应该是非延迟加载的模块,因为它们可以被任何组件使用。
来到header
和footer
组件,如果这些组件的内容将由某些@Input
属性(header
和footer
不应该是这种情况)改变,或者那些组件标签在你的应用程序的多个地方使用,那么他们可能会来在SharedModule
下。如果它们都是静态的,那么那些组件肯定属于CoreModule
。因为您只在一个地方使用这些组件标签。
由于我的应用程序具有延迟加载的模块,将来是否会引起问题,例如,如果一个惰性模块,例如Admin使用侧边栏服务在侧边栏中进行更改,这个更改是否会对其他延迟加载的模块可见?
- 不,它不可见,因为延迟加载的模块创建自己的服务实例。