Angular Ng1/Ng2 hybrid app throwing 'No provider for $scope' exception
我正在尝试构建一个使用 NgUpgrade 的混合 Ng1/Ng2 应用程序,作为向 Angular 2 迁移的中间步骤。
引导程序似乎可以工作:
1 2 3 | platformBrowserDynamic().bootstrapModule(AppModule).then( () => { adapter.bootstrap(document.body, [Ng1AppModule.name]); }); |
但我正在努力在 Ng2 组件中使用简单的 Ng1 指令,请参阅这个非常简单的插件:https://plnkr.co/edit/gMSwKKIgEkwcijCCaCMW?p=preview
即使在升级了 Ng1 指令并降级了 Ng2 组件之后,浏览器仍会发送"No provider for $scope!"异常。
我错过了什么?
我知道有些人已经报告了这个异常,但看起来 NgUpgrade 自从 Angular 2 的 beta 版以来已经发展了很多,我找不到当前 Angular 2 版本的合适答案。
找到了!
我的错误是尝试直接引导 ng2 模块,但看起来您必须将 ng1 组件放在 DOM 的顶层(是的,它写在官方 ngUpgrade 指南的某处)。这是正确更新的具有 ng1 根组件的 plunker,它调用一个 ng2 模块,它调用另一个 ng1 组件。
1 2 3 4 5 6 | const myNg1Root = { template: ` <p><center>[wp_ad_camp_2]</center></p><p>This is the Angular 1 root component</p> <ng2root></ng2root> `, }; |