0

angular1コンポーネントを再利用することを期待して、angular2プロジェクトを開始しています。この plunkr http://plnkr.co/edit/yMjghOFhFWuY8G1fVIEgに基づいてプロジェクトをセットアップしようとしましたが、アプリを実行しようとすると、次のエラーが発生しました。

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

plunkr は ng2 モジュールなしでアップグレード アダプターをインスタンス化しただけで、なぜうまくいかなかったのかわかりません。plunkr が使用している angular2 のバージョンはわかりませんが、バージョン 2.0.0 を使用しています。

4

1 に答える 1

0

どうやらAngular 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");
});
于 2016-09-30T17:04:31.257 に答える