【发布时间】:2017-02-05 01:14:47
【问题描述】:
所以我得到了一个相当大的项目,这个项目的开发理念是,随着 Angular 升级到完整的 2.0 版本,它应该启用 AoT 编译,最后我从 Angular 获取所有 API 并准备好执行它,或者这样看来……
首先,项目在 Angular 2 和 Typescript 2.0.2 的 JiT 模式下运行得非常好,但在 AoT 中却不是这样。
经过大量研究,我发现问题在于我的声明/提供者/入口组件列表是动态聚合的 - 这就是当应用程序拆分为许多子模块时会发生的情况,每个子模块都可以添加一些内容根据需要列出。当我尝试做类似的事情时:
@NgModule({
declarations:[ configuration.declarations ]
})
我收到Error encountered resolving symbol values statically.
如果我在 JiT 模式下输出聚合值并在此处手动插入来自 configuration.declarations 的所有条目的静态列表,它会突然开始不起作用。
所以最大的问题是 - 什么鬼?!为什么它不起作用以及如何克服这个问题?
就像手动制作具有单个文件中列出的所有子组件需求的大型应用程序一样,会大大破坏良好的代码设计,我最好不要相信已经证明非常擅长制作合理编码布局的 Angular 团队会暗示作为一个唯一的选择。
【问题讨论】: