整合角度1.x的内部角2.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'
,与我在测试中发现的类似)。
它是在一个单独的包?我应该手动安装吗?
编辑
的解决方案(现在),应该是:
使用自定义生成,请参阅here
-
采取实际的模块你的项目和导入(这是我的首选解决方案)
编辑22.11.15:
从alpha 46起,升级模块是公开的。为了使用它,不需要任何更多的黑客!
我已经做了一些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
谢谢。至于alpha 46升级模块是公共的,不需要解决方法。很好的博客文章! –
我认为你可能正在寻找[这一行](https://github.com/angular/angular/blob/master/test-main.js#L18)。我无法在我的项目中找到这样的路径,所以也许它没有被分配等等。但是,你可以做的是叉角回购,建立它,你会发现该目录,所以你可以复制并粘贴到您的项目。 –