由於您無法綁定到您的router-outlet
標記中的點擊事件,因此共享服務對於此場景來說是一個很好的呼叫。
比方說,你有一個組件(僞):
class MyWidget {
widgetData: Object;
constructor(private myService: MyService) { }
handleClick(event) {
this.myService.sendClick({event, data:this.widgetData})
}
}
然後在你的服務,你可以使用Subject保持存儲是需要爲您的Sidebar
組件的數據。
示例服務(僞代碼):
class MyService {
subject = new Subject();
sendClick(data) {
this.subject.next(data);
}
getClick(data) {
return this.subject.asObservable();
}
}
最後,你Sidebar
就能Subscribe從服務的getClick()
方法:
class Sidebar {
widgetData: Object;
constructor(private myService: MyService) {
myService.getClick()
.subscribe(v => doSomethingWithWidgetData(v));
}
}
對於其他資源:此blogpost具有良好這個概念的解釋。
你知道事件發生器嗎? –
是的,我知道事件發射器,但我不知道這是否是最好的解決方案,因爲我必須使用與發射器共享的服務,因爲我想在編輯後將設置寫回。 – Peter