要解决"Angular EventEmitter在订阅者中没有发出事件"的问题,首先需要检查以下几个方面:
下面是一个示例代码,演示了如何使用Angular EventEmitter解决这个问题:
在组件中定义事件发射器:
import { Component, EventEmitter, Output } from '@angular/core';
@Component({
selector: 'app-example',
template: `
`
})
export class ExampleComponent {
@Output() myEvent: EventEmitter = new EventEmitter();
triggerEvent() {
// 在适当的时机调用emit方法触发事件
this.myEvent.emit('Event Triggered');
}
}
在另一个组件中订阅事件:
import { Component } from '@angular/core';
@Component({
selector: 'app-subscriber',
template: `
{{ message }}
`
})
export class SubscriberComponent {
message: string;
constructor(private exampleComponent: ExampleComponent) {
// 订阅事件
this.exampleComponent.myEvent.subscribe(data => {
// 在订阅者中接收事件
this.message = data;
});
}
}
在模块中引入和声明这两个组件:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { ExampleComponent } from './example.component';
import { SubscriberComponent } from './subscriber.component';
@NgModule({
imports: [BrowserModule],
declarations: [ExampleComponent, SubscriberComponent],
bootstrap: [ExampleComponent]
})
export class AppModule { }
请注意,在上述示例中,ExampleComponent作为发布者发布了一个事件,而SubscriberComponent作为订阅者接收该事件,并将其展示在模板中。
确保在使用EventEmitter时,按照上述示例的方式正确定义和使用事件发射器,并确保订阅者正确订阅了事件。