1

我刚刚开始将 Angular 项目从 9.1.0 升级到 10.0.12 它仍然是一个混合应用程序,并且按照Angular 文档中的描述升级了几个组件(来自 Angular JS)

但是,在更新到 Angular 10 之后,这些升级的组件将无法加载并导致以下错误

类构造函数 UpgradeComponent 不能在没有“新”的情况下被调用(在新的 MyUpgradedComponentDirective 处)

我搜索了Changelog并没有找到任何关于 UpgradeComponent 的信息。

4

2 回答 2

3

更改jit为 true 可能不是最好的解决方案 - 这会将指令切换到模式,当它在浏览器运行时编译时,而不是作为预编译的 JS 代码提供。

如果您在那里有旧版本,似乎可以通过将tsconfig.json output属性设置为来解决此处描述的问题。ES2015

更多细节可以在这里找到:https ://github.com/angular/angular-cli/issues/18067

于 2020-10-24T00:52:26.747 回答
1

在没有结果的无尽搜索之后,我进入了试错模式。
我发现有一个jit属性@Directive,如果设置为true提到的错误就会消失。

添加jit: true升级后的组件代码看起来像这样

@Directive({
    selector: 'my-angular-selector',
    jit: true,
})
export class MyDirective extends UpgradeComponent {
    constructor(elementRef: ElementRef, injector: Injector) {
        super('angularJsDirectiveSelector', elementRef, injector);
    }
}
于 2020-08-25T15:04:16.907 回答