2017-01-09 11 views
2

ng1とng2の両方をブートストラップすることで、angular1からangular2にアップグレードしようとしています。私はこの例を実行すると、私はというエラーを取得しhttps://plnkr.co/edit/3jrnPyVc8WN2a4crUJFp?p=preview

:ここ

はコードである

Cannot read property 'get' of undefined 
at HeroDetailDirective.UpgradeComponent (https://unpkg.com/@angular/upgrade/bundles/upgrade-static.umd.js:512:43) 
at new HeroDetailDirective (https://run.plnkr.co/QOdaB9QdPbHLfQe9/app/main.0.ts!transpiled:45:16) 
at new Wrapper_HeroDetailDirective (/AppModule/HeroDetailDirective/wrapper.ngfactory.js:7:18) 

私はUpgradeComponentで$インジェクタが空であることがわかりデバッグする場合:

function UpgradeComponent(name, elementRef, injector) { 
     this.name = name; 
     this.elementRef = elementRef; 
     this.injector = injector; 
     this.controllerInstance = null; 
     this.bindingDestination = null; 
     this.$injector = injector.get($INJECTOR); 

なぜでしょうか?

ありがとうございました。

+0

何が定義されていませんか? 'this。$ injector'または' $ INJECTOR' – candidJ

+0

これは$ injectorが定義されていません – user1453460

+0

'this.injector = injector'の' this.injector'は何ですか? ElementInjector。 – candidJ

答えて

1

問題が見つかりました。

私はAppComponentをブートストラップするように定義:

@NgModule({ 
    imports: [ BrowserModule, UpgradeModule ], 
    declarations: [ AppComponent, HeroDetailDirective ], 
    bootstrap: [ AppComponent ] 
}) 
class AppModule { 
    ngDoBootstrap() {} 
} 

私は、ブートストラップの定義を削除すると、それが働いた:

@NgModule({ 
    imports: [ BrowserModule, UpgradeModule ], 
    declarations: [ AppComponent, HeroDetailDirective ] 
}) 
class AppModule { 
    ngDoBootstrap() {} 
} 

を私はハイブリッドアプリが常にNG1によってブートストラップされていることを認識していませんでした。このarticelは私を多く助けました:https://www.softwarearchitekt.at/post/2016/11/15/using-ngupgrade-with-aot-to-optimize-performane.aspx

関連する問題