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
。它是一个可观察的,是一个实现细节。