从另一个模块消费服务

时间:2018-03-15 17:11:58

标签: angular service module

我仍然是Angular的新手,并且我试图将我的大脑包裹在一些我希望有人可以为我提供一些亮点的东西......

我有一个具有强大(单一)服务的模块,我希望其他一些组件能够访问。我目前用static forRoot(): ModuleWithProviders导出它  东西,并导入“app.module.ts”。

现在,我可以让它成功运作。如果在使用该服务的组件中,我添加了一个这样的import语句:

import { XyzService } from '../../modules/xyz/xyz.service';

并将其注入组件的构造函数:

constructor(private _xyzr: XyzService) { }

但这似乎太紧密了。每个组件都必须导入模块的服务吗?这是正确的方法吗?有没有更好的办法?有些东西可以让我在不用去触摸每一个组件的情况下换掉更新/更好的模块......

谢谢!

1 个答案:

答案 0 :(得分:0)

你是对的,每个Component都需要导入相应的服务才能使用它。

不幸的是,据我所知,没有“好”的解决方案可以在以后完全更改服务而不替换它在文件中的出现(幸运的是,由于现代IDE,这是一项快速的任务)。如果您只优化现有服务,则根本不需要更换任何东西。我找到的可能对您有帮助的一个解决方案是this

如果您以后拥有许多常用服务,那么最好创建一个可以在其他模块中轻松导入的“共享模块”(但这只会处理模块中的导入混乱,而不是组件中的导入混乱) )。