如果你在使用 Angular 的 EventEmitter,发现观察者没有被调用,可能是因为以下原因:
你没有订阅 EventEmitter
你订阅的 EventEmitter 和发送事件的 EventEmitter 不是同一个
你的观察者没有正确的绑定 this
下面是一个示例,演示如何通过正确地订阅 EventEmitter 来使观察者被调用:
import { Component, EventEmitter, Output } from '@angular/core';
@Component({
selector: 'app-my-component',
template: ``,
})
export class MyComponent {
@Output() myEvent = new EventEmitter();
onClick() {
this.myEvent.emit('event triggered!');
}
}
@Component({
selector: 'app-root',
template: ` `,
})
export class AppComponent {
onEvent(event: any) {
console.log(event); // 'event triggered!'
}
}
在这个示例中,MyComponent
发送了一个事件,AppComponent
通过订阅 MyComponent
中的 myEvent
,处理这个事件。这里,我们正确地实现了订阅 EventEmitter
,所以观察者可以被调用。