Angular 2 loader en cada solicitud http

Lo que intento hacer es:
Quiero usar la ruleta cada vez que se produce una solicitud http. En otras palabras, quiero que el usuario vea una pantalla de carga cada vez que ocurre una solicitud http en mi componente app.com.
Mis archivos spinner.component y spinner-service son los mismos con la respuesta enesta pregunta.
Y mi componente de app.component es

@Component({
    selector: 'todoApi',
    template: `
        <div class="foo">
            <spinner-component></spinner-component>
            <h1>Internship Project</h1>
            <a [routerLink]="['Dashboard']">Dashboard</a>
            <a [routerLink]="['Tasks']">List</a>
            <router-outlet></router-outlet>
        <div>
    `,
    directives: [ROUTER_DIRECTIVES,SpinnerComponent],
    providers: [
        ROUTER_PROVIDERS,
    ]
})

@RouteConfig([
    {
        path: '/dashboard',
        name: 'Dashboard',
        component: DashboardComponent,
        useAsDefault: true
    },{
        path: '/tasks',
        name: 'Tasks',
        component: TaskComponent
    },{
        path: '/detail/:id',
        name: 'TaskDetail',
        component: TaskDetailComponent
    },
])

Para resumir, cada vez que se produce una solicitud http en una de estas rutas, quiero mostrar la ruleta al usuario. Sé que esta ha sido una mala pregunta, pero soy nuevo en angular 2 y realmente estaría agradecido si alguien pudiera ayudarme con eso.
¡Muchas gracias!
¡Editar!:
Solución con la respuesta de Günther: envolví mihttp yspinner-service en unaHttpClient componente y lo usó en lugar del módulo http normal. Aquí está miHttpClient componente:

import { Injectable } from '@angular/core';
import { Http, Headers } from '@angular/http';
import { SpinnerService} from './spinner-service';

@Injectable()
export class HttpClient {
  constructor(
      private http: Http,
      public spinner: SpinnerService
    ){

  }

  createAuthorizationHeader(headers:Headers) {
    headers.append('Authorization', 'Basic ' + btoa('username:password')); 
  }

  get(url) {
    this.spinner.start();
    let headers = new Headers();
    this.createAuthorizationHeader(headers);
    return this.http.get(url, { headers: headers }).do(data=> {this.spinner.stop()});
  }

  post(url, data) {
    this.spinner.start();
    let headers = new Headers();
    this.createAuthorizationHeader(headers);
    return this.http.post(url, data, { headers: headers }).do(data=> {this.spinner.stop()});
  }
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta