2016-03-02 107 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