¿Cómo pasar datos entre componentes hermanos sin usar $ scope?

Estoy haciendo un componente que contiene 3 componentes secundarios de esta manera:

<header-component>
<side-component>
<main-component>

El componente principal contiene una lista de héroes. El componente de encabezado contiene dos botones que se supone que cambian la vista del componente principal a la vista de lista o cuadrícula.

El problema que tengo ahora es pasar datos del componente de encabezado al componente principal. Entonces, cuando hago clic en el botón de cuadrícula, la vista del contenido principal debe cambiar a la vista de cuadrícula, lo mismo para la vista de fila.

¿Cómo se pueden pasar los datos entre los componentes secundarios en angular 1.5?

Respuestas a la pregunta(3)

Su respuesta a la pregunta