Javascript 升级AngularJS工厂(ES5)以用于Angular2(类型脚本)
我正在尝试使用Javascript 升级AngularJS工厂(ES5)以用于Angular2(类型脚本),javascript,angularjs,typescript,upgrade,angular,Javascript,Angularjs,Typescript,Upgrade,Angular,我正在尝试使用Angular2和TypeScript以及SystemJS作为模块加载器创建应用程序。 我已经准备好了一个工作的AngularJS 1.X,带有相应的框架,用JavaScript(ES5)编写,并使用googleclosure的一些基本功能 现在我想在我的Angular2应用程序中使用该框架的一些功能。 我一直在阅读一些关于Angular2UpgradeAdapter的教程,其中包括: 将现有代码升级到ES2015或TypeScript是没有意义的。 如果我们必须升级到Angula
Angular2
和TypeScript
以及SystemJS
作为模块加载器创建应用程序。我已经准备好了一个工作的
AngularJS 1.X
,带有相应的框架,用JavaScript
(ES5)编写,并使用googleclosure
的一些基本功能现在我想在我的
Angular2
应用程序中使用该框架的一些功能。我一直在阅读一些关于
Angular2
UpgradeAdapter
的教程,其中包括:
将现有代码升级到ES2015或TypeScript是没有意义的。如果我们必须升级到Angular 2,只需逐个组件重写可能更有意义 对我来说,这听起来像是可以在
Angular2(TypeScript)
中使用AngularJS(ES5)
组件/服务,反之亦然。但是,我在尝试升级要在我的
Angular2
组件中使用的AngularJS
工厂时遇到问题
情况:
我有一个文件webclient.js
它提供了一个名称空间my.webclient
(使用goog.provide
)。
在goog.scope
-函数中,它定义了一个名为my.webclient的angular.module
然后使用module.factory创建名为getWebclient
的factory
此工厂
返回一个函数
,该函数返回一个承诺
现在我想在我的Angular2
组件中使用这个工厂(getWebclient
)
我的Angular2
组件
如下所示:
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异常
getWebclient没有提供程序!(AppComponent->getWebclient)
我怎样才能解决这个问题
谢谢
编辑:
我将bootstrap
行更改为
upgradeAdapter.bootstrap(document.body, ["my.webclient"], {strictDi: true});
现在没有任何错误。但是,现在似乎没有使用
标记将AppComponent
加载到DOM中。请尝试此链接,这里有一些有用的详细信息:
首先,您不应该再使用
标记