2017-01-09 63 views
0

我想将数据发送到不是子组件或父组件的另一个组件。Angular 2在不相关的组件之间发送对象

我创建了一个Plunker来显示我所要求的。

当下面的代码被激发时我想听点什么。

fillSelectT(item){ 
    //populate Select to 
} 

以下代码应该监听数据。

listener(item){ 
    selectedItems.push(item); 
    } 

在C#这将是simmular到EventAggregator什么,我试图找出。

回答

2

作为documented here:你应该在两个部件之间共享服务,发射从服务事件选择一个项目时,并收听来自其它部件发出的事件。

@Injectable() 
class SelectionService { 
    selections = new Subject<any> 
    select(item) { 
    this.selections.next(item); 
    } 
} 

你plunkr,修改:http://plnkr.co/edit/qJ8bh7wN9qQvKTLJOb0T?p=preview

0

我做了充分的工作例证,基于你的。

1)两种组分的AppComponent子,然后创建变量和事件来触发并存储那些:

selectedItems: any[] = []; 

onSelectItem(item) { 
    this.selectedItems.push(item); 
} 

<select-from (onSelectItem)="onSelectItem($event)"></select-from> 
<select-to [selectedItems]="selectedItems"></select-to> 

2)修改select-from组件触发事件:

@Output() onSelectItem = new EventEmitter<any>(); 

fillSelectT(item){ 
     this.onSelectItem.emit(item); 
} 

3 )修改select-to组件以从其来电组件接收列表:

@Input() selectedItems:any = []; 

在这里,修改:Plunker

相关问题