Angular2 UpgradeComponent缺少$ injector

Dol*_*lan 10 upgrade web-component angular

我正在尝试升级Angular1组件并在我的Angular2应用程序中使用它遵循"使用Angular 2 Code中的Angular 1组件指令"中的官方Angular2文档,但它会出现以下错误:

error_handler.js:54 TypeError: Cannot read property 'get' of undefined
    at ChartDirective.UpgradeComponent (upgrade_component.js:97)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在第97行仔细检查后,这个.$检查员未定义:

在此输入图像描述

我的代码非常简单:

import { Directive, ElementRef, Injector } from '@angular/core';
import { UpgradeComponent } from '@angular/upgrade/static';

export const coolComponent = {
  template: 'cool',
  controller: function() {
  }
};

@Directive({
    selector: 'app-chart'
})
export class ChartDirective extends UpgradeComponent {

    constructor(elementRef: ElementRef, injector: Injector) {
        super('coolComponent', elementRef, injector);
    }
}
Run Code Online (Sandbox Code Playgroud)

我自己的主要内容是:

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app.module';

platformBrowserDynamic().bootstrapModule(AppModule);
Run Code Online (Sandbox Code Playgroud)

以下是问题的简化版本,只需极少的复制步骤:https: //github.com/dolanmiu/angular2-upgrade-test

它是由...生成的 angular-cli

Bra*_*som 3

我有类似的问题。为了解决我的问题,我从定义中删除了以下行AppModule

bootstrap: [AppComponent]
Run Code Online (Sandbox Code Playgroud)

就我而言,我还必须将以下内容添加AppComponent到我的entryComponents部分:

entryComponents: [AppComponent]
Run Code Online (Sandbox Code Playgroud)

ngDoBootstrap如果还没有的话,您还需要实现该方法:

export class AppModule {
  ngDoBootstrap() {}
}
Run Code Online (Sandbox Code Playgroud)