Ошибка в гибридном приложении angular1+2: необработанная ошибка: невозможно создать UpgradeAdapter без NgModule приложения Angular 2
Я начинаю проект angular2 с надеждой повторно использовать мои компоненты angular1. Я попытался настроить свой проект на основе этого plunkr http://plnkr.co/edit/yMjghOFhFWuY8G1fVIEg но когда я попытался запустить свое приложение, я получил эту ошибку:
Uncaught Error: UpgradeAdapter cannot be instantiated without an NgModule of the Angular 2 app.
Plunkr просто создал экземпляр адаптера обновления без какого-либо модуля ng2, и я не понимаю, почему он не работает для меня. Я не уверен, какую версию angular2 использует plunkr, но я использую версию 2.0.0.
1 ответ
По-видимому, 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");
});