angular - 如果使用 [].concat() 组合多个数组,Angular @NgModule 导入不会看到模块
问题描述
我有很多模块,想按类型将其排序和拆分为几个数组
const aModules: any[] = [
Module1,
Module2,
Module3,
Module4
];
const bModules: any[] = [
Module5,
Module6,
Module7,
Module8
]
如果使用扩展运算符,它将起作用
imports: [Module0, ...aModules, ...bModules]
但是如果使用 concat 方法它不起作用,如果使用下一个方法,任何组件都将不起作用:
imports: [Module0].concat(aModules, bModules)
这两种方法的打字稿编译器有什么区别?因为如果我们看到
console.log([Module0, ...aModules, ...bModules]);
console.log([Module0].concat(aModules, bModules));
两个结果看起来一样
解决方案
很难回答这个问题,因为 Angular 编译器的这方面没有太多的文档。在引擎盖下,AOT 编译器重写了装饰器使用的许多元数据,我怀疑这是它无法正确转换的一个例子。
我可以告诉你,这与 TypeScript 或 JavaScript 无关。这是 AOT 编译器的问题。
您可以在此博客中阅读有关转换器的信息:
https://blog.angularindepth.com/do-you-know-how-angular-transforms-your-code-7943b9d32829
您可以在此处找到转换器的源代码:
https://github.com/angular/angular/tree/master/packages/compiler-cli/src/transformers
推荐阅读
- asp.net - ASP.NET MVC - 同一解决方案中的多个控制器冲突
- sqlite - 嵌入式应用程序中的 SQLite“数据库磁盘映像格式错误”错误
- intellij-idea - 如何使用 IntelliJ Diagrams 查看实际依赖关系?
- python-3.x - Flask & Python:如何使用格式 HH:MM: SS.SSS in Flask 绘制带有月份 x 轴和 y 轴(数据)和时间的图表
- android - 尝试在包含空字段的 ArrayList 变量上使用 parcelable 时出现 kotlin.TypeCastException
- c++ - std::atomic 加载和存储都需要吗?
- android - Android:无法使用 Android Studio 3.6 构建项目
- r - R:将字符串拆分为不同的变量,如果字符串包含该单词,则赋值为 1
- cmake - 带分号的 CMake 变量
- android-studio - Android Studio 3.6:ClassNotFound androidxwork.R$bool