2015-10-14 41 views
0

我试图整合的角度1.x的应用程序内的角2.0组件(播放/学习提出...)整合角度1.x的内部角2.0 - 升级模块

现在,我看到它可以通过查看Angular2 upgrade module来完成:

import {Component, View, Inject, EventEmitter} from 'angular2/angular2'; 
    import {createUpgradeModule, UpgradeModule} from 'upgrade/upgrade'; 

    export function main() { 
     describe('upgrade: ng1 to ng2',() => { 
     it('should have angular 1 loaded',() => expect(angular.version.major).toBe(1)); 

     it('should instantiate ng2 in ng1 template and project content', 
      inject([AsyncTestCompleter], (async) => { 
      var Ng2 = Component({selector: 'ng2'}) 
          .View({template: `{{ 'NG2' }}(<ng-content></ng-content>)`}) 
          .Class({constructor: function() {}}); 

      var element = html("<div>{{ 'ng1[' }}<ng2>~{{ 'ng-content' }}~</ng2>{{ ']' }}</div>"); 

      var upgradeModule: UpgradeModule = createUpgradeModule(); 
      upgradeModule.importNg2Component(Ng2); 
      upgradeModule.bootstrap(element).ready(() => { 
       expect(document.body.textContent).toEqual("ng1[NG2(~ng-content~)]"); 
       async.done(); 
      }); 
      })); 
... continue tests here ... 

我创建了打字稿+ SystemJS + JSPM的角度1.x的应用程序,并使用jspm install angular2

现在安装角2.0,我可以使用Angular2导入import {Component} from 'angular2/angular2'(例如le),但我无法在Angular2的代码中找到升级模块(我想做import {createUpgradeModule, UpgradeModule} from 'upgrade/upgrade',与我在测试中发现的类似)。

它是在一个单独的包?我应该手动安装吗?

编辑

的解决方案(现在),应该是:

  1. 使用自定义生成,请参阅here

  2. 采取实际的模块你的项目和导入(这是我的首选解决方案)

    编辑22.11.15:

从alpha 46起,升级模块是公开的。为了使用它,不需要任何更多的黑客!

+1

我认为你可能正在寻找[这一行](https://github.com/angular/angular/blob/master/test-main.js#L18)。我无法在我的项目中找到这样的路径,所以也许它没有被分配等等。但是,你可以做的是叉角回购,建立它,你会发现该目录,所以你可以复制并粘贴到您的项目。 –

回答

1

我已经做了一些POC工作围绕这一点,这里是一个工作方法:

这里的关键是upgradeAdaptor

import {bootstrap,UpgradeAdapter} from 'angular2/angular2'; 
import {SomeA2Component} from './some/path'; 

declare var angular:any; 

var adapter: UpgradeAdapter = new UpgradeAdapter(); 
angular.module('app').directive('SomeA2Component', adapter.downgradeNg2Component(MyA2Component)); 
adapter.bootstrap(document.body, ['app']); 

我这儿也有一个工作示例:http://www.syntaxsuccess.com/viewarticle/upgrading-angular-1.x-to-2.0

+0

谢谢。至于alpha 46升级模块是公共的,不需要解决方法。很好的博客文章! –