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

上一篇: Bootstrapping Hybrid Angular 1+2 Application

下一篇: how to close realm instance with async transaction