【问题标题】:Class constructor UpgradeComponent cannot be invoked without 'new' after Update to Angular 10更新到 Angular 10 后,如果没有“new”,就无法调用类构造函数 UpgradeComponent
【发布时间】:2020-12-14 07:36:24
【问题描述】:

我刚开始将 Angular 项目从 9.1.0 升级到 10.0.12 它仍然是一个混合应用程序,并且有几个组件升级(来自 Angular JS),如 Angular docs

中所述

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

没有'new'就不能调用类构造函数UpgradeComponent(在新的MyUpgradedComponentDirective处)

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

【问题讨论】:

    标签: angularjs angular angular-hybrid


    【解决方案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);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2021-12-23
        • 2017-09-29
        • 2018-09-19
        • 1970-01-01
        • 2019-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多