-1

去年我在做一个项目,它使用的是 Angular 8。我今年恢复了这个项目,我现在正在使用 Angular 13 来使项目更加实际。我被它抛出的错误数量惊呆了。我在 ngOnInit 上使用的许多代码都必须更改为构造函数,主要是突出显示 FormGroup 的属性初始化,现在我必须在构造函数中对其进行初始化,否则我会收到一条消息,指出它未在构造函数中初始化。我不能使用 sysntax someObject["property"] 因为字符串属性可能不是 someObject 的属性。我有很多其他与语法相关的错误。自 Angular 8 以来发生了什么。我不是“Javascript 开发人员”。我不知道发生了什么。

我很肯定想要使用 Angular 13,但是。5 个版本是巨大的差距,我没有抱怨。自 Angular 8 以来,语法规则发生了变化,这是真的吗?

4

2 回答 2

0

我很肯定想要使用 Angular 13,但是。5 个版本是巨大的差距,我没有抱怨。自 Angular 8 以来,语法规则发生了变化,这是真的吗?

简短的回答:是的。

鉴于你必须经历大量的重大更新,我建议使用官方更新指南。它允许您逐步完成所需的更改,并在它们发生时一一解决。我直接将指南从 8.0 链接到 13.0,但是,我建议您以较小的步骤执行此操作(8.0 -> 9.0;9.0 -> 10.0 等等)。这将极大地帮助您准确了解调整代码所需的(明显)更改。

如果您想要更深入地了解,您可以阅读官方更新日志

于 2021-11-15T15:24:38.363 回答
0

似乎在某些更新期间,Angular 的严格模式被激活。然后编译器需要更严格的语法。"strict": false您可以通过设置来消除这些错误tsconfig.json

但 Angular 团队建议使用严格模式,原因如下:

严格模式提高了可维护性并帮助您提前发现错误。此外,严格模式应用程序更易于静态分析,并且可以在您更新到 Angular 的未来版本时帮助 ng update 命令更安全、更准确地重构代码。

于 2021-11-16T13:33:20.757 回答