gpt4 book ai didi

angular - 抛出错误 TypeError : Cannot read property 'emit' of undefined

转载 作者:太空狗 更新时间:2023-10-29 17:11:49 34 4
gpt4 key购买 nike

MyComponent 中,我试图从事件处理程序发出另一个事件。 (父组件将使用这个新事件来执行一些操作)。我创建了一个事件发射器作为 MyComponent 的成员,但事件处理程序方法无法访问事件发射器。它抛出 ERROR TypeError: Cannot read property 'emit' of undefined。我在 StackOverflow 上找到了一些相关问题,但由于是 Angular2 的新手,无法理解太多。

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

import YouTubePlayer from 'youtube-player';

@Component({
selector: 'app-my-component',
templateUrl: './my-component.component.html',
styleUrls: ['./my-component.component.css']
})

export class MyComponent implements OnChanges, OnInit {
@Input()
videoURL = '';

player : any;

videoId : any;

@Output()
myEmitter: EventEmitter<number> = new EventEmitter();

ngOnInit(): void {
this.player = YouTubePlayer('video-player', {
videoId: this.videoId,
width: "100%"
});
this.registerEvents();
}

private registerEvents() {
this.player.on("stateChange", this.onStateChangeEvent);
}

private onStateChangeEvent(event: any) {
console.log("reached here: " + event);
this.myEmitter.emit(1); //throws `ERROR TypeError: Cannot read property 'emit' of undefined`
}
}

有人能帮帮我吗?请注意,我必须仅从 onStateChangeEvent 发出事件,因为稍后我将针对不同类型的事件使用不同类型的事件发射器。因此,我将在 onStateChangeEvent 中放置一个 switch-case,并将使用不同的发射器 - 每种类型一个。

最佳答案

Cannot read property 'emit' of undefined

通常由错误的this引起。添加箭头 lambda 语法 =>

修复

  private onStateChangeEvent = (event: any) => {
console.log("reached here: " + event);
this.myEmitter.emit(1); // now correct this
}

更多

https://basarat.gitbooks.io/typescript/docs/arrow-functions.html

关于angular - 抛出错误 TypeError : Cannot read property 'emit' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45272138/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com