В качестве простого примера типа шаблона, который я ищу, у меня есть компонент списка, который имеет событие «выбран элемент списка». Я не хочу предоставлять фактическое действие для этого события внутри самого компонента. Вместо этого я хочу, чтобы компонент-владелец предоставил его Насколько я понимаю, это довольно стандартный шаблон компонентов, поскольку он обеспечивает разделение обязанностей и поощряет повторное использование (так как вы можете использовать тот же компонент списка в другом контексте, где выбор приводит к другому действию).
В UI Router для AngularJS это было легко достигнуто с помощью шаблона вместо простой ссылки на компонент и передачи туда функции обратного вызова, например:
.state('nav.clientHeader.clientList',{
template: '<client-list clients="$ctrl.clients" ' +
'onClick="$ctrl.loadClient"></client-list>',
url: '/list'
})
Мой вопрос: как это достигается в пользовательском интерфейсе Rotuer 2 для Angular 2+? Новый стандартный способ выполнения обратных вызовов в Angular 2+ - это использование декорации @Output для настройки шаблона emit / listen между родительским и дочерним элементами. Но похоже, что UI Router 2 не может установить привязку @Output? https://github.com/ui-router/angular/issues/138 - это полное чтение этой проблемы или речь идет о чем-то другом?
Я вижу ответы на похожие проблемы в основном Angular Router, предлагая использовать сервис для связи между двумя компонентами, но это кажется сумасшедшим подходом к чему-то столь простому, как onClick, особенно если учесть, что Angular действительно имеет правильный шаблон, доступный для него. через @ Output.