Проблема
Обычно в 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
, я не могу (насколько мне известно) вставить команду для мониторинга какого-либо события.
Я не уверен, как лучше всего подходит этот случай.