假设有ChildComponent发出一个名为someEvent的事件。显然,我可以在ParentComponent中捕获声明为<child-component (someEvent)="onSomeEvent($event)"></child-component>的事件,并使用onSomeEvent中的ParentComponent方法进行处理。但是我正在尝试的是我想用RxJS中的fromEvent运算符处理事件。在使用fromEvent(this.childComponent.nativeElement, 'someEvent')获得ElementRefChildComponent后,我尝试了@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/

10-12 07:37