Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 向下和向上事件_Angular - Fatal编程技术网

Angular 向下和向上事件

Angular 向下和向上事件,angular,Angular,我正在尝试angular 2,我觉得它很棒! 但我不知道如何发送/订阅事件 例如: 我有两个小组件:组件A和组件B。 ComponentA包含一个水果列表。组件B包含水果的详细信息。当用户从列表中选择一个水果(componentA)时,我希望ComponentB执行一个函数(例如console.log(event)) 为了实现这种行为,我想使用事件。 ComponentA不是componentB的父母,他们是兄弟。但我希望事件向下传播,也向上传播。 任何知道活动名称的人都必须能够订阅此活动 可能

我正在尝试angular 2,我觉得它很棒! 但我不知道如何发送/订阅事件

例如: 我有两个小组件:组件A和组件B。 ComponentA包含一个水果列表。组件B包含水果的详细信息。当用户从列表中选择一个水果(componentA)时,我希望ComponentB执行一个函数(例如console.log(event))

为了实现这种行为,我想使用事件。 ComponentA不是componentB的父母,他们是兄弟。但我希望事件向下传播,也向上传播。 任何知道活动名称的人都必须能够订阅此活动

可能吗? 我想使用angular2类,而不是外部库

我当前的代码:

导出类组件a
{
@Output()发射器:EventEmitter=neweventemitter();
private onfutureselected():void
{
this.emitter.emit(“你好!”);
}
}
导出类组件A
{
构造函数():void
{
//订阅事件的doJob()
}
private doJob():void{console.log('event catched');}
}
谢谢

编辑

我以这种方式更新了代码:

事件处理程序服务:

导出类EventEmitterService
{
@Output()eventOne:EventEmitter=neweventemitter();
@Output()eventTwo:EventEmitter=neweventemitter();
}
组件A(事件发送方):

导出类组件a
{
公共构造函数(私有eventHandler:EventEmitterService){}
private onfutureselected():void
{
this.emitter.emit(“你好!”);
this.eventHandler.eventOne.emit(“Hello事件一”);
this.eventHandler.eventTwo.emit(12);
}
}
组件B(事件接收器):

导出类组件a
{
构造函数():void
{
eventHandler.eventOne.subscribe((evt:string)=>{
console.log(“事件一”+evt);
});
eventHandler.eventTwo.subscribe((evt:number)=>{
console.log(“事件二”+evt);
});
}
}

这是一个好的解决方案吗?

Angular2没有为此提供功能。 您可以使用自定义事件总线服务。 另见


Angular2没有提供这方面的功能。 您可以使用自定义事件总线服务。 另见


谢谢您的回答!我刚刚更新了我的问题,你认为解决方案是什么?再次感谢!谢谢你的回答!我刚刚更新了我的问题,你认为解决方案是什么?再次感谢!