Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.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 RxJS fromEvent运算符,输出EventEmitter为角度_Angular_Rxjs - Fatal编程技术网

Angular RxJS fromEvent运算符,输出EventEmitter为角度

Angular RxJS fromEvent运算符,输出EventEmitter为角度,angular,rxjs,Angular,Rxjs,假设有一个ChildComponent,它发出一个名为someEvent的事件。显然,我可以在ParentComponent中捕获事件,并使用ParentComponent中的onSomeEvent方法处理它。但我尝试的是,我想用RxJS中的fromEvent操作符来处理事件。在使用@ViewChild获取childComponent的ElementRef之后,我尝试了fromEvent(this.childComponent.nativeElement,'someEvent')。我发现,如果输

假设有一个
ChildComponent
,它发出一个名为
someEvent
的事件。显然,我可以在
ParentComponent
中捕获事件,并使用
ParentComponent
中的
onSomeEvent
方法处理它。但我尝试的是,我想用RxJS中的
fromEvent
操作符来处理事件。在使用
@ViewChild
获取
childComponent
ElementRef
之后,我尝试了
fromEvent(this.childComponent.nativeElement,'someEvent')
。我发现,如果输出EventEmitter的事件名称与一个本机事件(如
click
)相同,则上述方法可以工作,但在其他情况下不会响应/工作。是否有任何方法可以使其与来自事件的
一起工作?

如果要将事件转换为可观察事件,可以使用
主题,如下所示:

@组件({
选择器:“父组件”,
模板:`
`
})
导出类ParentComponent{
公共主题=新主题();
构造函数(){
这个主题是烟斗(
轻触(event=>console.log(event))//或其他
).subscribe();
}
}

这样做将为您提供一个可观察的源-主体-它发出事件发射器发出的任何值。因此,您可以使用RxJS运算符编写任何您想要的内容。

为什么要使用
fromEvent
?你想把角度事件转换成可观测的吗?@cartant实际上,使用
fromEvent
并不是那么必要,但我正试图用这种方法来处理rxjs流operators@cartant你介意转寄你的答案吗?我很困惑。它仍然不起作用。我已取消删除答案。避免在Angular和for中直接访问本机元素有很好的理由。@cartant我认为在Angular中直接访问本机元素并不坏,除非我对其进行操作。为什么不好?因此除了使用
主题
之外,将无法使用
fromEvent
操作符绑定
组件
事件(输出EventEmitter)?根据你的建议,我可以按照我的意愿使用rxjs操作符,但我需要额外的
Subject
变量来完成我想要的。即使你可以,你也不应该。cartant的解决方案是您应该使用的正确解决方案。@IngoBürk显然,我可以直接订阅
someEvent
。为什么我应该有一个额外的主题呢?@dongbinikim,因为
EventEmitter
。它是一个可观察的,是一个实现细节。