EventEmitter.emit不是函数

问题描述

我有一个子组件,无论用户何时更改选择,我都使用primem插件中的下拉菜单将其值发送给父组件。我使用 EventEmitter.emit()函数发出类型为Solution的值。 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:发射不是函数

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

解决方法

很可能您导入了错误的EventEmitter,这可以在IDE中自动发生,例如VS Code。它会尝试导入Node.js events https://docs.python.org/3/library/struct.html,以确保从@angular/core EventEmitter导入,如:

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

希望有帮助!

,

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