我正在学习角度问题,但有一个问题:我在主要组件内部有一个组件,我想发出一个事件,但出现错误。这是我的代码:
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');
}
}
这是此组件的html代码:
开始游戏 结束游戏这是应用程序根组件html:
<div>
<app-game-control (numberGenerated)="numberGeneratedEvent($event)">
</app-game-control>
<hr>
<br>
</div>
请注意,这是一个窗口,而不是组件。我在做什么错了?
答案 0 :(得分:1)
尝试以下方法:
this.game = setInterval(() => this.generateEvent(), 1000);
这似乎是不必要的函数调用附加层,但这对于维护this
上下文的方式很重要。