【问题标题】:EventEmitter.emit() is not a functionEventEmitter.emit() 不是函数
【发布时间】:2020-10-14 22:18:28
【问题描述】:

我有一个子组件,每当用户更改选择时,我都会使用primeng 插件中的下拉菜单将其值发送给父组件。我使用 EventEmitter.emit() 函数来发出一个解决方案类型的值。 Solution 是我自己定义的接口。
以下是我定义发射器的方式:

@Output('solutionChange') selectedSolution: EventEmitter<Solution> = new EventEmitter<Solution>();

以下是我如何称呼发射器:
public onSolutionChange(args) {
    let solution: Solution = args.value as Solution;
    this.selectedSolution.emit(solution);
  }

问题是当我调用 emit() 函数时,它会给出错误 TypeError: emit is not a function

我已经尝试将发射器的定义更改为@Output('solutionChange') selectedSolution: EventEmitter&lt;any&gt; = new EventEmitter&lt;any&gt;();,因为 args.value 是来自后端的任何类型,但仍然是相同的错误。我还尝试用 next() 函数替换 emit() 函数。

【问题讨论】:

  • 显示你是如何导入EventEmitter的。
  • 你要导入 Angular/core/ eventemitter...

标签: angular typescript angular9 eventemitter primeng-dropdowns


【解决方案1】:

您可能导入了错误的EventEmitter,这可能会在 IDE(例如 VS Code)中自动发生。它尝试导入 Node.js events EventEmitter 确保从 @angular/core EventEmitter 导入,例如:

import { Output, EventEmitter } from '@angular/core';

希望对您有所帮助!

【讨论】:

  • 我使用了那个导入。谢谢
  • 不,它没有。我使用了您建议的导入,但这是另一个问题。感谢您的帮助!
【解决方案2】:

我设法解决了。我试图解决它大约一个小时,当我认为我没有其他选择时,我决定寻求帮助。这是我的错误,因为我在 NgModel 和 HTML 中给出的参数不小心,而且我还在从后端获取数据的服务中使用了错误的参数。在我提出问题之前,我还多次检查了类型。 我保留这个问题的原因是为了帮助其他可能像我一样犯同样错误的人。 感谢您的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-20
    • 2020-07-18
    • 1970-01-01
    • 2020-06-08
    • 2018-08-28
    • 2017-05-06
    • 2019-12-20
    • 1970-01-01
    相关资源
    最近更新 更多