router-outlet
태그의 클릭 이벤트에 바인딩 할 수 없으므로 공유 서비스는이 시나리오에 대한 좋은 호출입니다.
의 당신이 구성 요소 (의사)가 있다고 가정 해 봅시다 :
class MyWidget {
widgetData: Object;
constructor(private myService: MyService) { }
handleClick(event) {
this.myService.sendClick({event, data:this.widgetData})
}
}
그런 다음 서비스에, 당신은 상점 귀하의
Sidebar
구성 요소에 필요한 데이터를 유지하는
Subject를 사용할 수 있습니다.
예 서비스 (psuedocode) : 다른 자원에 대한
class Sidebar {
widgetData: Object;
constructor(private myService: MyService) {
myService.getClick()
.subscribe(v => doSomethingWithWidgetData(v));
}
}
:
이
class MyService {
subject = new Subject();
sendClick(data) {
this.subject.next(data);
}
getClick(data) {
return this.subject.asObservable();
}
}
마지막으로, Sidebar
이 서비스에서 getClick()
방법 Subscribe 할 수있을 것입니다이 blogpost 좋은있다 이 개념의 설명.
이벤트 송신기에 대해 알고 있습니까? –
예 이벤트 이미 터에 대해 알고 있지만 이미 터와 공유 서비스를 사용해야하고 편집 후 설정을 다시 쓰고 싶기 때문에 이것이 최선의 해결책인지는 잘 모릅니다. – Peter