有什么方法可以将子组件使用@output 发出的事件转换为父组件中的可观察流

Is there any way to convert event emitted by child component using @output into observable stream in parent

要发出从子级到父级的任何点击,我们可以在子级和父级中使用@output html我们可以使用下面显示的方式收听该事件

在 parent 中我们可以编写方法 addItem($event) 并完成我们的工作,但是有什么方法可以将它转换为流以便我可以将它与其他方法结合使用可观察。

我现在能想到的一种方法是在父级中有一个主题,然后发出如下所示的值以在父级中创建一个流

addItem($event) {
subject.emit()
}

但是,如果我们有任何直接的方法可以将 child 发出的事件转换为 observable,那会更好。

您可以通过使用 ViewChild 装饰器来实现。

<app-item-output #myChild></app-item-output>
@ViewChild('myChild') myChild: ItemOutputComponent;

ngAfterViewInit() {
  this.myChild.newItemEvent.subscribe(
    event => /** do something **/
  );
}

试试 stackblitz 上描述的方法:

https://stackblitz.com/edit/angular-ivy-q9rcmk?file=src/app/app.component.ts