我想我在Angular中发现了一个错误,但我不确定它,它实际上出现在我还不熟悉的区域。如果有人能够证实它可能存在,那就太棒了,因为我不愿意报告它。
我有一个名为SettingsService
的服务,它有一个名为loadSettings()
的函数。顾名思义,它会加载设置。它应该在应用加载之前调用,我通过将其添加到providers
的{{1}}部分来实现:
app.module.ts
错误在于它有时可以工作,有时甚至不工作,甚至不更改providers: [SettingsService,
{ provide: APP_INITIALIZER,
useFactory: (config: SettingsService) => () => config.loadSettings(),
deps: [SettingsService],
multi: true
},
或服务本身。有时我只是停止NG Live Development Server,重新启动它,代码突然无法编译。我收到的错误消息是:
app.module.ts
起初我尝试了各种修补,比如删除lambda函数并使用一个命名的函数,但是一旦我回滚到原始版本,它突然起作用了。我能够重现它,但它只是随机发生的。刚才我又收到了这个错误消息,我只是通过添加一个空格,删除它,保存来修复它,并且当ng-cli重新编译应用程序时,它现在有效了。没有一点实际代码被改变了!
我想知道是否有人对这个原因有所了解。
答案 0 :(得分:2)
您的代码应该进行静态分析。所以
export function init(config: SettingsService) {
return () => config.loadSettings();
}
providers: [
SettingsService,
{
provide: APP_INITIALIZER,
useFactory: init,
deps: [SettingsService],
multi: true
}
]
另见