使用EventEmitter作为Input()

问题描述 投票:0回答:1

我有 2 个组件 b,c,位于 a 中同一级别 A 乙

c 在 Output() 中使用 EventEmitter eC 引发了我想在 b 中使用的事件。 由于我无法“直接”将其提供给 b,因此我通过创建另一个位于 a 中的 EventEmitter eA 来“重定向”这些事件,该 eA 仅重播传入事件 eC。然后我将此 EventEmitter 作为 Input() 传递给 b:

//b
  @Input() public reloadRequested: EventEmitter<void>;
  ngOnInit() {
    this.reloadRequested.subscribe(() => {
...
    });
  }

这种做法有什么问题吗?我很想知道,因为我在网上研究期间基本上没有找到任何东西。 否则你会怎么做?

angular angular-components
1个回答
0
投票

来自文档

在组件中使用 @Output 指令同步或异步发出自定义事件,并通过订阅实例来注册这些事件的处理程序。 事件发射器

还有

通过添加emit()方法扩展了Angular的RxJS主题。 事件发射器

所以它看起来确实只是一个只有一个目的的主题:从组件输出数据,所以我将使用它们只是为了这个。

我通常在父组件中订阅 eventEmitter,将数据存储在变量中并将其发送到其他子组件的 Input。

一切都应该自动刷新。

© www.soinside.com 2019 - 2024. All rights reserved.