Mam ListComponent. Po kliknięciu elementu w ListComponent szczegóły tego elementu powinny zostać wyświetlone w DetailComponent. Oba są wyświetlane na ekranie w tym samym czasie, więc nie ma tu żadnego routingu.
Jak powiedzieć DetailComponent, który element w ListComponent został kliknięty?
Rozważyłem wysłanie zdarzenia do elementu nadrzędnego (AppComponent) i kazałem rodzicowi ustawić selectedItem.id na DetailComponent z @Input. Albo mógłbym skorzystać z usługi współdzielonej z obserwowalnymi subskrypcjami.
EDYCJA: Ustawienie wybranego elementu za pomocą zdarzenia + @Input nie powoduje jednak wywołania elementu DetailComponent na wypadek, gdyby trzeba było wykonać dodatkowy kod. Więc nie jestem pewien, czy to akceptowalne rozwiązanie.
Ale obie te metody wydają się o wiele bardziej złożone niż sposób robienia rzeczy w Angular 1, który był albo przez $ rootScope. $ Broadcast, albo $ scope. $ Parent. $ Broadcast.
Ponieważ wszystko w Angular 2 jest komponentem, jestem zaskoczony, że nie ma więcej informacji o komunikacji komponentów.
Czy jest inny / prostszy sposób na osiągnięcie tego?