在Angular中,可以通过使用路由器的事件传递功能将事件传递给位于router-outlet中的组件。
首先,在发出事件的组件中,需要使用@Output装饰器定义一个事件发射器。例如,我们可以在AppComponent中定义一个名为eventEmitter的事件发射器:
import { Component, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'app-root',
template: `
`
})
export class AppComponent {
@Output() eventEmitter = new EventEmitter();
emitEvent() {
this.eventEmitter.emit('Hello from AppComponent!');
}
}
然后,我们需要在接收事件的组件中监听这个事件。可以使用@HostListener装饰器监听事件发射器,并在事件发射时执行相应的逻辑。例如,我们可以在HomeComponent中监听来自AppComponent的事件:
import { Component, HostListener } from '@angular/core';
@Component({
selector: 'app-home',
template: `Received Event: {{ receivedEvent }}`
})
export class HomeComponent {
receivedEvent: string;
@HostListener('eventEmitter', ['$event'])
onEventEmitted(event: string) {
this.receivedEvent = event;
}
}
这样,当在AppComponent中点击按钮并发出事件时,HomeComponent将接收到该事件并在模板中显示出来。
需要注意的是,使用@HostListener装饰器监听的事件名称需要与事件发射器的名称一致。在这个例子中,我们使用了eventEmitter作为事件发射器的名称。
最后,确保在路由配置中将HomeComponent添加到相应的路由路径中,以确保它在router-outlet中显示。
这样,当点击AppComponent中的按钮时,事件将传递给router-outlet中的HomeComponent,并在页面上显示出来。