Angular 2体系结构-用于跨模块共享服务的位置

Angular 2体系结构-用于跨模块共享服务的位置,angular,service,architecture,angular2-services,angular2-modules,Angular,Service,Architecture,Angular2 Services,Angular2 Modules,我读过一些Angular 2项目架构,但它们不是我的案例 我的问题是在哪里放置跨模块使用的共享服务 我的项目有多个模块,例如:管理模块和用户模块 结构如下: app |管理员 ||-一些管理组件 ||-管理模块 |使用者 ||-一些用户组件 ||-共享 ||-user.service ||-user.module 问题是:我想在管理模块的一些组件中检索用户的信息。所以,我将用户服务导入管理模块,并将其放置在管理模块提供程序中 我认为这不是一个好的做法 我发现: 但我不知道这是否是一种好的做法。

我读过一些Angular 2项目架构,但它们不是我的案例

我的问题是在哪里放置跨模块使用的共享服务

我的项目有多个模块,例如:
管理模块
用户模块

结构如下:

app
|管理员
||-一些管理组件
||-管理模块
|使用者
||-一些用户组件
||-共享
||-user.service
||-user.module

问题是:我想在管理模块的一些组件中检索用户的信息。所以,我将用户服务导入管理模块,并将其放置在管理模块提供程序中

我认为这不是一个好的做法

我发现: 但我不知道这是否是一种好的做法。 我是否应该将
user.service
放置到
app/\u services
以供通用?我是否应该创建一个services.module来初始化user.service,然后将服务模块导入其他模块

app
|_服务
||-user.service
|管理员
||-一些管理组件
||-admin.module-导入并将user.service设置为provider
|使用者
||-一些用户组件
||-user.module-导入并将user.service设置为提供者

`

如果需要,可以将用户服务导入管理组件。这仅仅意味着管理模块将依赖于用户模块,这是完全正确的,但是您可能需要有意识地构建依赖树,这样它们就不会失控

将所有用户服务和用户组件保留在用户内部,不要将用户服务放在共享服务文件夹中。这是最具可扩展性的体系结构。它被命名为“功能文件夹”或“单一责任”。如果您启动一个“共享”文件夹,只需插入所有模块中的服务,那么该文件夹很快就会变得巨大,应用程序的所有部分都将依赖于该文件夹,从而紧密耦合整个应用程序


请参阅约翰·帕帕的官方angular2风格指南,该指南提倡单一责任:

创建另一个模块。。。类似于
SharedModule
的东西,然后将共享组件/服务/类放在那里。要使用它,您只需导入
UserModule
内部的模块,还需要导入
AdminModule
。NgModule的设计非常糟糕,没有必要,而且容易混淆abstraction@developer033正如Eeks33所说;在这种情况下,我的所有模块都与
SharedModule
紧密耦合。我也有一个
SharedModule
,但它用于另一个目的。我的
SharedModule
包含一些常用组件、指令、类,例如表单组、分页、树状视图。。。在多个模块中重用的。谢谢你的建议。谢谢你的建议!你救了我一天。