我想创建一个应用程序使用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中。