Comunicación angular 2/4 entre dos componentes a través de un servicio compartido

Estoy tratando de crear una aplicación de carrito de compras simple. Tengo dos componentes y un servicio de carrito como el siguiente.

<app-header></app-header>

<app-cart></app-cart> 

El servicio en el carrito tiene toda la funcionalidad para agregar un artículo al carrito, eliminar el artículo en el carrito, la cantidad del carrito, etc.

Necesito actualizar el recuento del carrito en el componente del encabezado cuando el usuario agrega un producto al carrito.

Cómo hacer eso con un servicio compartido.