RxJS fromEvent运算符,在Angular中输出EventEmitter

Don*_*Kim 3 rxjs angular

说有ChildComponent哪个会发出一个叫做的事件someEvent.很显然,我能赶上事件ParentComponent声明一样,<child-component (someEvent)="onSomeEvent($event)"></child-component>并且该方法处理它onSomeEventParentComponent.但我正在尝试的是,我想fromEvent在RxJS中使用运算符处理事件.我试图fromEvent(this.childComponent.nativeElement, 'someEvent')获得后ElementRefChildComponent@ViewChild.我发现如果输出EventEmitter的事件名称与其中一个本机事件相同click但上面没有响应/工作,则上述方法有效.有没有办法让它合作fromEvent

car*_*ant 9

如果要将事件转换为observable,可以使用a 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();
  }
}
Run Code Online (Sandbox Code Playgroud)

这样做会为您提供一个可观察的来源 - 主题 - 它会发出事件发射器发出的任何值.从那里你可以使用RxJS运算符组合你想要的任何东西.

  • @DongBinKim 因为`EventEmitter` [不能保证被实现为可观察的](/sf/answers/2525369101/)。它是一个 observable 是一个实现细节。 (2认同)