Проблема
Обычно в Angular 2 можно прослушивать событие через следующий синтаксис:
<my-elem (customEvent)="customEventProcessor"></my-elem>
Но когда я использую маршрутизатор, этот хост - <my-elem> - не существует ни в одном шаблоне. Вместо этого есть <router-outlet>, и мой компонент загружается при навигации. Таким образом, суть моей проблемы заключается в том, как заставить мой хост прослушивать мое пользовательское событие, не полагаясь на шаблон?
Дополнительные сведения
Предположим, что у меня есть элемент list-view, который является дочерним элементом моего корневого компонента. list-view прослушивает настраиваемое событие через обычный синтаксис:
<list-view (customEvent)="customEventProcessor()"></list-view>
Только для полноты компонент list-view, который испускает событие, также имеет предсказуемую структуру:
<button (click)="onDetailsClick(propertyOfInterest)">Click here</button>
list-view отправляет событие до родителя через наблюдение.
class ListView {
...
public onDetailsClick(property: string): void {
this.customEvent.next({ value: property });
}
}
и это событие вызывает функцию customEventProcessor(). Все идет нормально. Однако, когда я использую маршрутизатор для управления присутствием list-view, я не могу (насколько мне известно) вставить команду для мониторинга какого-либо события.
Я не уверен, как лучше всего подходит этот случай.