您可以爲此使用共享服務。
export class EventSourceComponent{
constructor(private sharedService : SharedService){}
onbtnclick(){
this.sharedService.testev.next("i have emitted an event")
}
}
export class CmpTwoComponent{
//here get the emitted event with data
constructor(sharedService : SharedService){
sharedService.testev.subscribe((event)=>{console.log(event)})
}
}
然後sharedService將
@Injectable()
export class SharedService{
public testev = new Subject()
}
很顯然,如果你仍然需要Output
所以父組件可以是能夠正常訂閱,您可以添加它:
export class EventSourceComponent{
@Output() testev = new EventEmitter();
constructor(private sharedService : SharedService){}
onbtnclick(){
this.testev.emit("i have emitted an event")
this.sharedService.testev.next("i have emitted an event")
}
}
你不應該在你的服務中使用'EventEmitter'; https://stackoverflow.com/questions/36076700/what-is-the-proper-use-of-an-eventemitter。改用'Observable' /'Subject'。 – echonax
真棒米拉感謝 –