我想創建一個應用程序使用Angular2
和TypeScript
與SystemJS
作爲模塊加載程序。
我已經有一個工作AngularJS 1.X
與相應的框架,編寫在JavaScript
(ES5)和使用一些基本功能Google Closure
。
現在我想在我的Angular2
應用程序中使用該框架的一些功能。
我一直在閱讀有關的Angular2
UpgradeAdapter
一些教程,包括this one,他們說:升級AngularJS工廠(ES5)用於Angular2(TypeScript)
它並沒有真正意義的升級現有代碼ES2015或打字稿。
如果我們必須升級到Angular 2,那麼按組件重新編寫組件可能更有意義。
對我來說,這聽起來像有可能在Angular2 (TypeScript)
,反之亦然使用AngularJS (ES5)
組件/服務。
但是,當我嘗試升級AngularJS
factory
以用於我的Angular2
Component
時,我遇到了問題。
的情況:
我有一個文件webclient.js
。
它提供了一個命名空間my.webclient
(使用goog.provide
)。
在goog.scope
函數中,它定義了一個名爲my.webclient
的angular.module
。
然後使用module.factory
創建名爲getWebclient
的factory
。
This factory
returns a function
,which returns a Promise
。
現在我想在我的Angular2
Component
中使用這個factory
(getWebclient
)。
我Angular2
Component
看起來像這樣:
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中。