2016-01-14 112 views
0

我想創建一個應用程序使用Angular2TypeScriptSystemJS作爲模塊加載程序。
我已經有一個工作AngularJS 1.X與相應的框架,編寫在JavaScript(ES5)和使用一些基本功能Google Closure
現在我想在我的Angular2應用程序中使用該框架的一些功能。
我一直在閱讀有關的Angular2UpgradeAdapter一些教程,包括this one,他們說:升級AngularJS工廠(ES5)用於Angular2(TypeScript)

它並沒有真正意義的升級現有代碼ES2015或打字稿。
如果我們必須升級到Angular 2,那麼按組件重新編寫組件可能更有意義。

對我來說,這聽起來像有可能在Angular2 (TypeScript),反之亦然使用AngularJS (ES5)組件/服務。
但是,當我嘗試升級AngularJSfactory以用於我的Angular2Component時,我遇到了問題。

的情況:

我有一個文件webclient.js
它提供了一個命名空間my.webclient(使用goog.provide)。
goog.scope函數中,它定義了一個名爲my.webclientangular.module
然後使用module.factory創建名爲getWebclientfactory
This factory returns a function,which returns a Promise
現在我想在我的Angular2Component中使用這個factorygetWebclient)。

Angular2Component看起來像這樣:

import {Component, Inject} from "angular2/core"; 
import {bootstrap} from "angular2/platform/browser"; 
import adapter from "./upgrade"; // adapter is a new UpgradeAdapter() 

adapter.upgradeNg1Provider("getWebclient"); 

@Component({ 
    selector: "my-app", 
    templateUrl: "path-to-tamplate/app.html" 
}) 
export class AppComponent { 

    constructor(@Inject("getWebclient") getWebclient) { 
     getWebclient().then(webclient => { 
      // If the Promise succeed i'll can log the webclients name property. 
      console.log(webclient.name); 
     }) 
    } 
} 

bootstrap(AppComponent); 

然而,這導致DI Exception與消息

無提供getWebclient! (AppComponent - > getWebclient)。

我怎樣才能解決這個問題?

感謝

編輯:

我改變了bootstrap

upgradeAdapter.bootstrap(document.body, ["my.webclient"], {strictDi: true}); 

,現在沒有任何錯誤。但是,現在AppComponent似乎並未使用<my-app/>標記加載到DOM中。

回答