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 有一些见解,但最重要的是,它提到虽然出口订单确实很重要,但并没有官方记录。
我会像考虑订购进口商品一样考虑这一点。
这花了我一段时间才弄清楚。非常感谢您的解释。
我将所有核心服务文件保存在一个公共文件夹中,然后将其添加到一个名为 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 有一些见解,但最重要的是,它提到虽然出口订单确实很重要,但并没有官方记录。
我会像考虑订购进口商品一样考虑这一点。