Javascript 角度:EventEmitter在嵌入式组件中未定义

Javascript 角度:EventEmitter在嵌入式组件中未定义,javascript,angular,eventemitter,angular-event-emitter,Javascript,Angular,Eventemitter,Angular Event Emitter,我正在学习angular,但我遇到了一个问题:我在主组件中有一个组件,我想发出一个事件,但我得到了一个错误。这是我的密码: import { Component, OnInit, Output, EventEmitter } from '@angular/core'; @Component({ selector: 'app-game-control', templateUrl: './game-control.component.html', styleUrls: ['./gam

我正在学习angular,但我遇到了一个问题:我在主组件中有一个组件,我想发出一个事件,但我得到了一个错误。这是我的密码:

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

@Component({
  selector: 'app-game-control',
  templateUrl: './game-control.component.html',
  styleUrls: ['./game-control.component.css']
})
export class GameControlComponent implements OnInit {
  @Output() numberGenerated: EventEmitter<{v: number}> = new EventEmitter<{v: number}>();
  game: any;

  constructor() { }

  ngOnInit() {
  }

  startGame() {
    this.game = setInterval(this.generateEvent, 1000);
  }

  stopGame() {
    clearInterval(this.game);
  }

  generateEvent(): void {
    const n = Math.floor((Math.random() * 10) + 1);
    this.numberGenerated.emit({v: 3});
    console.log('event sent');
  }
}
从'@angular/core'导入{Component,OnInit,Output,EventEmitter};
@组成部分({
选择器:“应用程序游戏控制”,
templateUrl:'./game control.component.html',
样式URL:['./游戏控制.component.css']
})
导出类GameControlComponent实现OnInit{
@Output()numberGenerated:EventEmitter=新的EventEmitter();
游戏:任何;
构造函数(){}
恩戈尼尼特(){
}
startGame(){
this.game=setInterval(this.generateEvent,1000);
}
停止游戏{
clearInterval(这个游戏);
}
generateEvent():void{
常数n=数学楼层((数学随机()*10)+1);
this.numberGenerated.emit({v:3});
console.log('event sent');
}
}
这是此组件的html代码:

开始比赛 终局 下面是应用程序根组件html:

<div>
    <app-game-control (numberGenerated)="numberGeneratedEvent($event)">
    </app-game-control>
    <hr>
    <br>
</div>

请注意,这是一个窗口,而不是一个组件。我做错了什么?

试试这个:

this.game = setInterval(() => this.generateEvent(), 1000);

这似乎是一个不必要的额外的函数调用层,但对于维护
上下文的方式来说很重要。

作为
此传递的函数指针。generateEvent
不携带类
GameControlComponent
的特定实例的上下文。当函数以这种方式调用时,函数上下文中的
this
没有正确定义。顺便问一下,我的建议解决了问题吗?它解决了问题,但不了解原因。现在我明白为什么了。谢谢,不用担心。没想到是你。:)