2016-01-14 68 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中。

回答