说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
一起使用?
答案 0 :(得分:8)
如果您想将事件转换为可观察事件,可以使用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运算符组合您想要的任何内容。