Концептуально У меня есть следующие настройки:Как получить данные о двух дочерних компонентах?
AppComponent
| \
| \
| FeedbackComponent
|
Router-Outlet
|
SearchComponent
Идея заключается в том, что при попытке обеспечить обратную связь с помощью FeedbackComponent будет собирать текущее состояние веб-приложение и отправить его на сервер. Я хотел бы собрать из SearchComponent последний поиск, который он выполнил.
В AppComponent, у меня есть:
constructor(private router: Router) {}
И в представлении AppComponent где я использую обратную связь, у меня есть:
<feedback [router]="router"></feedback>
С FeedbackComponent, я могу затем получить имя из в настоящее время «маршрутизируемый» компонент с this.router.currentInstruction.component.componentType.name
(это возвращает строку «SearchComponent»). Однако componentType
является конструктором объекта, который в настоящий момент указывает маршрутизатор, а не экземпляр этого объекта. Поскольку у меня нет экземпляра, я не могу запросить SearchComponent для его последнего поиска, не делая этот статический запрос (который я не хочу делать, он ломает другие вещи).
Угловой 1 имел $broadcast
и $emit
, но у углового 2, похоже, нет замены.
Если бы я не загружу SearchComponent используя маршрутизатор-выход, то я мог бы использовать @Output()
и @Input()
передать вещи между ними через AppComponent, но я не думаю, что я мог бы сделать эту работу с маршрутизатором таким образом.
Как может экземпляр моего запроса FeedbackComponent запрашивать данные из экземпляра моего SearchComponent?
Я сохраняю в курсе Angular2.0.0-beta.13
https://angular.io/docs/ts/latest/cookbook/component -коммуникационный.html #! # двунаправленный сервис, применимый к вашему делу –