Bootstrapping混合角1 + 2应用程序
正式5分钟快速入门之后,我有一个简单的Angular 2应用程序工作。
我设置了Angular 1,现在他们都独立工作,看到这个闯关者。
在官方升级指南之后,他们说:
要将应用程序切换到混合模式,我们必须首先在项目中安装Angular 2。 请按照QuickStart中的说明获取相关指示。 当我们安装Angular 2时,我们可以导入并实例化UpgradeAdapter
,然后调用它的bootstrap
方法。 它被设计为采用与angular.bootstrap完全相同的参数,因此很容易制作开关:
import {UpgradeAdapter} from 'angular2/upgrade';
/* . . . */
const upgradeAdapter = new UpgradeAdapter();
upgradeAdapter.bootstrap(document.body, ['heroApp'], {strictDi: true});
我的问题是在哪里放置它 ?
这听起来像是“做我的工作”的问题,但事实并非如此。 我想在main.ts
,但我尝试了很多事情,但没有成功。 该文档对此并不十分清楚,一些月份的一些教程已经过时。
---更新:
在我的情况下,我忘了加载我认为已经包含的upgrade.js
我看看你的朋友。 事实上,您可以使用多次bootstrap
但这意味着您在HTML页面中使用了两个不同的应用程序。
如果你想Angular1和Angular2东西混合到同一个应用程序,你需要调用只有boostrap
的方法UpgradeAdapter
。
的的呼叫boostrap
功能上UpgradeAdapter
和它的创建可以在完成boot.ts
文件:
import {UpgradeAdapter} from 'angular2/upgrade';
var upgrade = new UpgradeAdapter();
// Configure the upgrade adapter
(...)
export function main() {
try {
upgrade.bootstrap(document.body, ['heroApp']);
} catch (e) {
console.error(e);
}
}
你可以像这样将它导入到你的HTML文件中:
<script>
System.import('app/main').then(function(src) {
src.main();
});
</script>
混合Angular2和Angular1的东西
如果您想引导一个Angular2应用程序 ,请提供主要组件作为第一个参数,并为Angular1应用程序提供程序,以便能够将工厂/服务/指令用于Angular2应用程序。
// Providers for Angular1 elements
upgrade.upgradeNg1Provider('customService');
upgrade.upgradeNg1Provider('customFactory');
// Providers for Angular2 elements
upgrade.addProvider(HTTP_PROVIDERS);
// Bootstrap Angular2 application
upgrade.bootstrap(AppComponent);
如果你想让Angular1应用程序使用Angular2的东西 ,你需要提供document.element作为bootstrap
方法的第一个参数:
// Providers for Angular2 elements
upgrade.downgradeNg2Provider(HTTP_PROVIDERS);
upgrade.bootstrap(document.body, ['heroApp']);
这个plunkr也可能对你有用:http://plnkr.co/edit/yMjghOFhFWuY8G1fVIEg?p=preview。
链接地址: http://www.djcxy.com/p/90263.html