Bud*_*ril 2 javascript eventemitter angular angular-event-emitter
我正在学习 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');
}
}
Run Code Online (Sandbox Code Playgroud)
这是该组件的 html 代码:
开始游戏结束游戏这是 app-rootcomponent html:
<div>
<app-game-control (numberGenerated)="numberGeneratedEvent($event)">
</app-game-control>
<hr>
<br>
</div>
Run Code Online (Sandbox Code Playgroud)
但是当我单击“开始游戏”按钮时,我从附加的图像中收到错误消息:

请注意,这是一个窗口而不是一个组件。我做错了什么?
试试这个:
this.game = setInterval(() => this.generateEvent(), 1000);
Run Code Online (Sandbox Code Playgroud)
这似乎是不必要的额外函数调用层,但它对于this维护上下文的方式很重要。
| 归档时间: |
|
| 查看次数: |
1274 次 |
| 最近记录: |