Angular 2 中提供的服务在桶文件中的导出顺序更改了 DI 行为

Order of exports in barrel file for provided services in Angular 2 changes DI behavior

这花了我一段时间才弄清楚。非常感谢您的解释。

我将所有核心服务文件保存在一个公共文件夹中,然后将其添加到一个名为 common.ts.

的桶文件中

我在app.module中导入这些服务并提供它们。

从桶文件中导出的服务顺序似乎会影响 DI 行为。

当我运行按这个顺序导出时

export { Core } from './core';
export { TestService } from './test-service';

我收到了

无法解析 OtherService 的所有参数:(?)

OtherService 是一个虚拟服务,不包含在 barren 文件中,因为它是我测试的特定组件。 OtherService 在 app.module 中提供并列在 TestService 之后(不确定这是否重要,但这是非常奇怪的一天)。

如果我将 common.ts 桶文件中的导出顺序更改为

export { TestService } from './test-service';
export { Core } from './core';

OtherService 将很好地接收 TestService。我能想到的唯一其他交互是将 CoreService 注入 app.component,但它不依赖于 TestService。

为什么更改桶文件中的导出顺序会修改 Angular DI 引擎的行为?如果你问我,那是疯狂的谈话。

如有必要,我可以尝试在线复制,但我会等待要求这样做。

感谢您的任何意见, 麦克

TL;DR 官方好像没有答案

这篇 post 有一些见解,但最重要的是,它提到虽然出口订单确实很重要,但并没有官方记录。

我会像考虑订购进口商品一样考虑这一点。