【问题标题】:Consuming a Service From Another Module从另一个模块消费服务
【发布时间】:2018-08-24 14:47:04
【问题描述】:

我对 Angular 还很陌生,我正在努力思考一些我希望有人能为我提供一些启示的东西......

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

现在,我可以让它成功运行。如果,在要使用该服务的组件中,我添加这样的导入语句:

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

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

constructor(private _xyzr: XyzService) { }

但这似乎太紧耦合了。每个组件都必须导入模块的服务?这是正确的方法吗?有没有更好的办法?可以让我在未来将模块换成更新/更好的模块,而无需触及每个组件...

谢谢!

【问题讨论】:

标签: angular service module


【解决方案1】:

你说得对,每个Component都需要导入对应的Service才能使用。

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

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

【讨论】:

  • 嗯,在这种情况下,使用 tsconfig 中的路径映射内容来抽象出服务的 .ts 文件的确切完整路径是个好主意吗? typescriptlang.org/docs/handbook/…
  • TBH 我不确定。在 Angular 应用程序中从未见过这样的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-30
  • 2022-01-23
  • 2019-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-23
相关资源
最近更新 更多