所以我在这里得到了一个非常大的项目,该项目的开发是为了在Angular进展到完整的2.0版本时,它应该启用AoT编译,最后我从Angular获得所有API并准备好了,或者等等好像......
首先,项目在使用Angular 2和Typescript 2.0.2的JiT模式下工作非常好,但在AoT中却不是这样。
经过大量研究后,我发现问题在于我的声明/ providers / entryComponents列表是动态聚合的 - 这就是当应用程序被分成许多子模块时会发生的事情,每个子模块都可以添加一些东西根据需要,这些列表。当我尝试做类似的事情时:
@NgModule({
declarations:[ configuration.declarations ]
})
我收到了Error encountered resolving symbol values statically.
如果我在JiT模式下输出聚合值并在此处手动插入来自configuration.declarations
的所有条目的静态列表,它会突然开始工作。
所以最重要的问题是 - 到底是怎么回事?!为什么它不起作用以及如何克服这个问题?
正如使用单个文件中列出的所有子组件要求的大型应用程序手动打破良好的代码设计时间,我最好不要相信已经证明非常擅长制作合理的编码布局的Angular团队将暗示作为一个唯一的选择。