![](/img/trans.png)
[英]Angular 9: Parent function not called on EventEmitter.emit from child
[英]EventEmitter.emit() is not a function
我有一个子组件,每当用户更改选择时,我都会使用来自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<any> = new EventEmitter<any>();
因为args.value是来自后端的任何类型,但仍然是相同的错误。 我还尝试用 next() 函数替换 emit() 函数。
您可能导入了错误的EventEmitter
,这可能会在 IDE(例如 VS Code)中自动发生。 它尝试导入 Node.js events
EventEmitter确保您从@angular/core
EventEmitter导入,例如:
import { Output, EventEmitter } from '@angular/core';
希望这有帮助!
我设法解决了它。 我试图解决它大约一个小时,当我认为我没有其他选择时,我决定寻求帮助。 这是我的错误,因为我没有注意我在 NgModel 和 HTML 中给出的参数,而且我还在从后端获取数据的服务中使用了错误的参数。 在我问这个问题之前,我也多次检查了类型。 我保留这个问题的原因是为了帮助其他可能和我一样犯同样错误的人。 谢谢你的帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.