所以我有这个代码-
@Component({
tag: "app-home",
styleUrl: "app-home.css"
})
export class AppHome {
@Event()
myEvent: EventEmitter;
callEv() {
this.myEvent.emit("hello");
}
render() {
return (
<div class="app-home">
<button onClick={this.callEv}>Hello</button>
</div>
);
}
}
单击按钮后,我在控制台中收到此错误-
Uncaught TypeError: Cannot read property 'emit' of undefined at HTMLButtonElement.callEv
知道为什么吗?
答案 0 :(得分:1)
在callEv
方法内,您使用this
关键字来调用事件发射器服务。但是在模板内部,上下文是不同的,因此this
不包含事件发射器服务,这会导致您出错。
您需要做的是将当前上下文绑定到该方法。将此添加到您的班级:
constructor() {
this.callEv = this.callEv.bind(this);
}