混合angular1 + 2应用程序出错:未捕获错误:如果没有Angular 2应用程序的NgModule,则无法实例化UpgradeAdapter

时间:2016-09-28 16:40:43

标签: angularjs angular2-upgrade

我正在开始一个angular2项目,希望重用我的angular1组件。我试图基于这个plunkr设置我的项目The http plugin plugin supports the following configuration options但是当我尝试运行我的应用程序时,我收到了这个错误:

  Uncaught Error: UpgradeAdapter cannot be instantiated without an NgModule of the Angular 2 app.

plunkr只是在没有任何ng2模块的情况下实例化了升级适配器,我不明白它为什么不能为我工作。我不确定plunkr使用的angular2版本是什么,但我使用的是版本2.0.0。

1 个答案:

答案 0 :(得分:0)

显然,角度2.0.0需要将NgModule传递给UpgradeAdapter构造函数。我从@ angular / update中挖掘出以下代码片段:

var adapter = new UpgradeAdapter(forwardRef(() => MyNg2Module));
var module = angular.module('myExample', []);

module.directive('greet', function () {
 return {
 scope: {salutation: '=', name: '='},
 template: '{{salutation}} {{name}}! - <span ng-transclude></span>'
};
});

module.directive('ng2', adapter.downgradeNg2Component(Ng2));

@Component({
  selector: 'ng2',
  template: 'ng2 template: <greet salutation="Hello" [name]="world">text</greet>'
})
class Ng2 {
}

@NgModule({
 declarations: [Ng2, adapter.upgradeNg1Component('greet')],
 imports: [BrowserModule]
})
class MyNg2Module {
}

document.body.innerHTML = '<ng2></ng2>';

adapter.bootstrap(document.body, ['myExample']).ready(function () {
  expect(document.body.textContent).toEqual("ng2 template: Hello world! - text");
});