在Angular 8中,当使用emit
发出一个事件并在订阅时出现undefined
错误时,可能是因为没有正确地定义事件的类型或没有正确地订阅事件。以下是解决此问题的代码示例:
首先,在组件类中定义一个EventEmitter
类型的属性,用于定义要发出的事件。例如:
import { Component, EventEmitter, Output } from '@angular/core';
@Component({
selector: 'app-example',
template: `
`
})
export class ExampleComponent {
@Output() myEvent: EventEmitter = new EventEmitter();
onClick() {
this.myEvent.emit('Hello, World!');
}
}
在上面的代码中,我们定义了一个名为myEvent
的事件,并使用EventEmitter
来定义它的类型。在onClick
方法中,我们使用emit
方法发出了一个字符串类型的事件。
接下来,在订阅事件的地方,确保正确地订阅事件并处理它。例如:
import { Component } from '@angular/core';
@Component({
selector: 'app-parent',
template: `
`
})
export class ParentComponent {
onEvent(event: any) {
console.log(event);
}
}
在上面的代码中,我们在父组件中使用ExampleComponent
组件,并在myEvent
事件上订阅了onEvent
方法。当事件被发出时,onEvent
方法会被调用,并打印事件的内容到控制台。
确保在模板中正确地使用事件名称,并在订阅方法中传递正确的事件参数。这样,你应该可以解决undefined
的问题。