假设有ChildComponent
发出一个名为someEvent
的事件。显然,我可以在ParentComponent
中捕获声明为<child-component (someEvent)="onSomeEvent($event)"></child-component>
的事件,并使用onSomeEvent
中的ParentComponent
方法进行处理。但是我正在尝试的是我想用RxJS中的fromEvent
运算符处理事件。在使用fromEvent(this.childComponent.nativeElement, 'someEvent')
获得ElementRef
的ChildComponent
后,我尝试了@ViewChild
。我发现,如果输出EventEmitter的事件名称与本地事件之一(例如click
)相同,则上述方法有效,但否则不会响应/不起作用。有什么方法可以使其与fromEvent
一起使用?
最佳答案
如果要将事件转换为可观察的事件,可以使用Subject
,如下所示:
@Component({
selector: 'parent-component',
template: `
<child-component (someEvent)="subject.next($event)">
</child-component>
`
})
export class ParentComponent {
public subject = new Subject<any>();
constructor() {
this.subject.pipe(
tap(event => console.log(event)) // or whatever
).subscribe();
}
}
这样做将为您提供一个可观察的来源-主题-发出事件发射器发出的任何值。由此,您可以使用RxJS运算符编写任何内容。
关于angular - RxJS fromEvent运算符,在Angular中具有输出EventEmitter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49228081/