我是否可以仅在根目录中捕获从叶子组件发出的事件 零件?我没有找到任何相关的信息。
答案 0 :(得分:1)
实际上,您只能通过父组件中的子组件通知自定义事件。
要实现您的用例,您需要在其providers
属性中实现您在根组件中指定的共享服务。这样,它将与此组件及其子组的所有图形共享。
此服务包含可观察/主题。当叶子想要触发事件时,它将利用与此可观察对象或主题相关联的观察者。根组件订阅此observable / subject以获得通知
以下是一个示例实现。首先是服务:
export class EventService {
subject$: Subject<any> = new Subject();
}
根组件:
@Component({
(...)
providers: [ EventService ]
(...)
})
export class RootComponent {
constructor(private service:EventService) {
this.eventService.subject$.subscribe(event => {
// Execute when the event is received from leaf component
});
}
}
叶子成分:
@Component({
(...)
template: `
<div (click)="emitEventToRoot()">Emit event</div>
`
})
export class LeafComponent {
constructor(private service:EventService) {
}
emitEventToRoot() {
// Send the event to the root component
this.eventService.subject$.emit('some event');
}
}
这些链接可能会让您感兴趣: