每个模块都应该有服务来获取数据吗? (Angular 2)

时间:2017-07-31 18:31:25

标签: angular

我目前正致力于角度2应用。

假设我在我的应用程序中构建了一个新的功能模块,这个模块需要来自服务器的一些数据,我还有一些全局数据服务(核心模块)可以将这些数据提供给我的新模块。

我的问题是,如果我构建另一个与这些数据服务通信的服务,我的新模块中的任何组件都只会与该服务通信, 或者我的组件可以直接与数据服务对话。

(假设数据服务具有简单的crud操作,例如)

我的另一个问题是,功能模块服务可以直接与服务器通信(即发出ajax请求),还是应该总是通过数据服务进行通信?

我尝试用图片解释它,希望它会有所帮助.. enter image description here

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您有一个为整个应用程序提供数据的通用数据服务,那么每个组件都可以访问它。

如果您对功能有更多特定的数据访问需求,那么即使它依次调用通用数据服务,也可以向功能模块添加第二项服务。

直接添加到您的组件是。将其分离到自己的组件中可以更容易地进行修改,测试和调试。它使它在整个应用程序中可重用。

答案 1 :(得分:0)

回答你的问题。首先,功能模块面向使用延迟加载更多信息https://angular.io/guide/ngmodule#angular-modularity 目标是将应用程序加载到由路由器控制的模块中。其次,希望服务实例化一次并且可以在任何地方使用。这就是核心模块的原因。核心模块将添加到我们的app.module.ts中,随处可用。总之,我认为只需使用核心模块中的服务就需要在功能模块中提供服务。对于你的其他问题,这是可能的,但这不是一个好的做法,因为你的服务可能不止一次被实例化,这是不必要的,并可能导致问题。

希望它有所帮助。