我花了一段时间才弄明白 . 我非常感谢你的解释 .
我将所有核心服务文件保存在一个公共文件夹中,然后将其添加到名为common.ts的桶文件中 .
我在app.module中导入这些服务并提供它们 .
看起来从桶文件导出的服务的顺序会对DI行为产生影响 .
当我按此顺序运行导出时
export { Core } from './core';
export { TestService } from './test-service';
我收到
无法解析OtherService的所有参数:(?)
OtherService是一个虚拟服务,不包含在贫瘠文件中,因为它是我测试的特定组件 . OtherService在app.module中提供,并在TestService之后列出(不确定是否重要,但这是非常奇怪的一天) .
如果我将common.ts桶文件中的导出顺序更改为
export { TestService } from './test-service';
export { Core } from './core';
OtherService会很好地收到TestService . 我能想到的唯一其他交互是将CoreService注入app.component,但它不依赖于TestService .
为什么更改桶文件中的导出顺序会修改Angular DI引擎的行为?如果你问我,这是疯狂的谈话 .
如果有必要,我可以尝试在线重现,但我会等待请求这样做 .
谢谢你的任何意见,迈克
1 回答
TL; DR似乎没有正式答案 .
Angular 2 - Dependency Injection and Barreling
这篇文章有一些见解,但最重要的是,它提到虽然出口订单确实很重要,但它并没有正式记录 .
我会想到这就像我想要订购我的进口一样 .