在 Angular 9 中,事件发射器不发射的问题可能是由于以下几个原因导致的:
组件没有正确引入事件发射器:确保你在组件中正确引入了事件发射器。例如,如果你的事件发射器定义在一个名为myEmitter
的属性中,则应该在组件中导入EventEmitter
并将其定义为@Output() myEmitter = new EventEmitter
。
组件没有正确触发事件:在你想要触发事件的地方,确保使用emit()
方法来触发事件。例如,如果你想在点击按钮时触发事件,则应该在按钮的点击事件处理程序中调用this.myEmitter.emit(data);
。
组件没有正确订阅事件:在父组件中,确保正确订阅子组件发出的事件。在模板中使用事件绑定语法来订阅事件。例如,如果你的事件发射器名为myEmitter
,则应该在父组件模板中使用
来订阅事件,并在父组件中定义一个名为handleEvent()
的方法来处理事件。
下面是一个具体的示例,展示了在 Angular 9 中如何使用事件发射器:
在子组件中:
import { Component, EventEmitter, Output } from '@angular/core';
@Component({
selector: 'child-component',
template: `
`
})
export class ChildComponent {
@Output() myEmitter = new EventEmitter();
triggerEvent() {
const data = 'Hello, parent component!';
this.myEmitter.emit(data);
}
}
在父组件中:
import { Component } from '@angular/core';
@Component({
selector: 'parent-component',
template: `
{{ eventData }}
`
})
export class ParentComponent {
eventData: string;
handleEvent(data: string) {
this.eventData = data;
}
}
在上面的示例中,当点击子组件的按钮时,将触发myEmitter
事件,并将数据传递给父组件。父组件将在handleEvent()
方法中接收到事件数据,并将其赋值给eventData
属性,然后在模板中显示出来。
确保按照上述步骤检查和调试你的代码,以解决事件发射器不发射的问题。