2016-03-02 108 views
4

我想在我的Angular 1控制器中添加一个Angular 2组件,所以Angular 1控制器是父级,而Angular 2组件是一个孩子。我希望孩子和家长能够相互交换数据,就像在Angular 2中使用@Input和@Output一样。有谁知道如何做到这一点?Angular 1中的角度2组件?

回答

3

这应该使用升级适配器模块(与Angular 2一起发货)完成。

步骤应该是: 1.使用适配器引导您的应用程序,而不是ng-app 2.降级您的angular 2组件并用Angular 1指令包装它。

你可以用我的超级简单的Todo应用实例(看看到提交了内部“升级”分支步骤): Todo-app example

这是如何引导文件的样子:

declare var angular: any; 

import {UpgradeAdapter} from 'angular2/upgrade'; 
import {TodoList} from "./components/todo-list"; 
import {TodoInput} from "./components/todo-input"; 
import {TodoApp} from "./components/todo-app"; 

let adapter = new UpgradeAdapter(); 

angular.module('todoListWorkshopApp').directive('todoList', adapter.downgradeNg2Component(TodoList)); 

angular.module('todoListWorkshopApp').directive('todoInput', adapter.downgradeNg2Component(TodoInput)); 

angular.module('todoListWorkshopApp').directive('todoApp', adapter.downgradeNg2Component(TodoApp)); 

adapter.bootstrap(document.body, ['todoListWorkshopApp']); 

这是(角1)控制器的模板的一个例子:

<div> 
    <todo-input (on-item-added)="add($event)"></todo-input> 
    <todo-list [todos]="todos"></todo-list> 
</div> 
+0

嗨的Yaniv,我通过回购T的升级分支看着你发布的帽子,但我找不到在你的ng2组件中使用\ @input或\ @output的任何例子,就像问题所问。我甚至没有看到你引用的代码(用于控制器模板)。你有一个在ng1应用程序中使用ng2组件的\ @ input或\ @output的工作示例吗?这是我的团队现在一直试图解决一两天的问题。谢谢。 – SemperCallide