angular - 当我在组件 A 中收到此函数的事件时,如何调用组件 B 中的函数

标签 angular events eventemitter

当我从 ws 获取事件时,我想使用事件发射器:

我有这个函数可以获取事件,当我有事件时我想调用其他组件中的函数。

组件 A, typescript 代码:

@Output() notify: EventEmitter<any> = new EventEmitter();
getSocketevent() {
  this.socket.on('data', (data) => {
    this.notify.emit(data)
  });
}

组件A,html代码:

<app-component-B (click)='getSocketevent()'></app-component-B>

在组件B中我想调用这个函数:

getprod() {
  this.ws.getallprod().subscribe(res => {
    this.dataSource = new MatTableDataSource(res);
    this.dataSource.paginator = this.paginator
  })
}

当我在组件 A 中收到此函数的事件时,如何调用组件 B 中的函数?

最佳答案

来自Component Interaction > Parent calls an @ViewChild()

When the parent component class requires that kind of access, inject the child component into the parent as a ViewChild.

在你的情况下,它是:

// A component.ts
....
@ViewChild(BComponent, {static: false})
private bComponent: BComponent;

getSocketevent() {
  this.socket.on('data', (data) => {
    // this.notify.emit(data)
    this.bComponent.getprod();
  });
}

StackBlitz Demo

在这种情况下,您可以看到您实际上并不需要使用 EventEmitter

关于angular - 当我在组件 A 中收到此函数的事件时,如何调用组件 B 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57337170/

相关文章:

javascript - 如何获取元素的事件监听器

iphone - 使用 EKEventEditViewController 创建带有闹钟的日历事件

javascript - 在EventEmitter上,我如何知道我可以监听的所有事件?

javascript - 发布/订阅模式中的参数如何工作?

angular - eventEmitter 可以在路由器 socket 上工作吗?

javascript - 为什么在输入用户输入时过滤无法正常工作?

ios - 如何停止在返回导航时调用 ActivatedRoute.queryParams.subscribe?

javascript - 仅将纯文本粘贴到可编辑的 div 中

javascript - 在 vuejs 上向父级发送样式值

angular - VSCode 中有什么方法可以通过单击标签跳转到定义标签的 Angular 组件吗?