更新到 Angular 10 后,如果没有“new”,就无法调用类构造函数 UpgradeComponent
Posted
技术标签:
【中文标题】更新到 Angular 10 后,如果没有“new”,就无法调用类构造函数 UpgradeComponent【英文标题】:Class constructor UpgradeComponent cannot be invoked without 'new' after Update to Angular 10 【发布时间】:2020-12-14 07:36:24 【问题描述】:我刚开始将 Angular 项目从 9.1.0 升级到 10.0.12 它仍然是一个混合应用程序,并且有几个组件升级(来自 Angular JS),如 Angular docs
中所述但是在更新到 Angular 10 之后,这些升级的组件将无法加载并导致以下错误
没有'new'就不能调用类构造函数UpgradeComponent(在新的MyUpgradedComponentDirective处)
我搜索了Changelog 并没有找到任何关于 UpgradeComponent 的信息。
【问题讨论】:
【参考方案1】:将 jit
更改为 true 可能不是最好的解决方案 - 这会将指令切换到模式,当它在浏览器运行时编译时,而不是作为预编译的 JS 代码提供。
如果您有旧版本,这里描述的问题似乎可以通过将tsconfig.json
output
属性设置为ES2015
来解决。
更多详情可以在这里找到:https://github.com/angular/angular-cli/issues/18067
【讨论】:
【参考方案2】:在没有结果的无休止搜索之后,我进入了试错模式。
我发现@Directive
上有一个jit
属性,如果设置为true
,上述错误就会消失。
添加jit: true
后,升级后的组件代码如下所示
@Directive(
selector: 'my-angular-selector',
jit: true,
)
export class MyDirective extends UpgradeComponent
constructor(elementRef: ElementRef, injector: Injector)
super('angularJsDirectiveSelector', elementRef, injector);
【讨论】:
以上是关于更新到 Angular 10 后,如果没有“new”,就无法调用类构造函数 UpgradeComponent的主要内容,如果未能解决你的问题,请参考以下文章
将 Angular 应用程序从 6 升级到 10 更新后会产生很多错误
在 IE10 中升级到 Angular2 RC5 后没有提供 PlatformRef 错误
升级到 9.0 和 angular 7 后修复 angular-redux/store
Angular 10 PWA 中 Chrome 更新后的新警告“无法安装站点:页面无法脱机工作。从 Chrome 93 开始...”