title: Error: No provider for HttpHandler in angular2
body: <p>I am trying to implement HttpCache through interceptor. Following is the caching-interceptor.service.ts</p>
  
  <pre><code>import { HttpRequest, HttpResponse, HttpInterceptor, HttpHandler, HttpEvent } from '@angular/common/http'
  import { Injectable } from '@angular/core';
  import { Observable } from 'rxjs/Observable';
  
  import 'rxjs/add/operator/do';
  import 'rxjs/add/observable/of';
  
  export abstract class HttpCache {
    abstract get(req: HttpRequest&lt;any&gt;): HttpResponse&lt;any&gt;|null;
    abstract put(req: HttpRequest&lt;any&gt;, resp: HttpResponse&lt;any&gt;): void;
  }
  
  
  
  @Injectable()
  export class CachingInterceptor implements HttpInterceptor {
      constructor(private cache: HttpCache) {}
  
      intercept(req: HttpRequest&lt;any&gt;, next: HttpHandler) : Observable&lt;HttpEvent&lt;any&gt;&gt; {
          if(req.method !== 'GET'){
              return next.handle(req);
          }
  
          const cachedResponse = this.cache.get(req);
  
          if(cachedResponse){
              return Observable.of(cachedResponse);
          }
  
          return next.handle(req).do(event =&gt; {
              if(event instanceof HttpResponse){
                  this.cache.put(req, event);
              }
          })
      }
  }
  </code></pre>
  
  <p>and I am calling from test.service.ts</p>
  
  <pre><code>import { Injectable } from '@angular/core';
  import { Headers, Http, Response} from '@angular/http';
  import { HttpClient} from '@angular/common/http';
  import { Observable } from 'rxjs/Observable';
  import { ReplaySubject } from 'rxjs/ReplaySubject';
  
  import 'rxjs/add/operator/map';
  import 'rxjs/add/operator/catch';
  
  import { BehaviorSubject } from 'rxjs/BehaviorSubject';
  
  import { APIService } from './api.service';
  import { CachingInterceptor } from './caching-interceptor.service';
  import { ConfigurationService } from './configuration.service';
  import { AuthenticationStatus, IAuthenticationStatus } from '../models';
  import { User } from '../models/user.model';
  
  @Injectable()
  export class PlatformService extends APIService {
  
  
  
    constructor(private http: Http, public httpClient: HttpClient, private configuration: ConfigurationService,
       public cachingInterceptor: CachingInterceptor) {
      super();
  
  
    }
  
    getUserById(id: string) {
      console.log(this.requestOptions);
      return this.httpClient.get(this._getAPIUrl('user/' + id),this.requestOptions).
        subscribe(res =&gt; res);
    }
    get requestOptions(): RequestOptions {
      const tokenObj = window.localStorage.getItem('TOKEN');
      const token = JSON.parse(tokenObj);
      const headers = this.headers;
      headers.append('Authorization', 'Bearer ' + token.token);
      headers.append('Access-Control-Allow-Origin', '*');
      return new RequestOptions({ headers: headers });
    }
  
  
  }
  </code></pre>
  
  <p>and Module file is following</p>
  
  <pre><code>import { CommonModule } from '@angular/common';
  import { HTTP_INTERCEPTORS, HttpClient } from '@angular/common/http';
  import { FormsModule } from '@angular/forms';
  
  import { ModuleWithProviders, NgModule } from '@angular/core';
  
  import { PlatformService } from '../../services/platform.service';
  import { CachingInterceptor } from '../../services/caching-interceptor.service';
  
  
  @NgModule({
    imports: [CommonModule, FormsModule],
  
    declarations: [],
  
    exports: [],
  
    entryComponents: [EntryHereComponent]
  })
  export class StructurModule {
    public static forRoot(): ModuleWithProviders {
      return { ngModule: StructurModule, providers: [PlatformService,
         {
          provide: HTTP_INTERCEPTORS,
          useExisting: CachingInterceptor,
          multi: true
      },HttpClient] };
    }
  }
  </code></pre>
  
  <p>I don't understand, what are missing so it giving error </p>
  
  <blockquote>
    <p>No provider for HttpHandler.</p>
  </blockquote>
  
  <p>If I add HttpHandler in provider in module file, It start giving error for  provide: HTTP_INTERCEPTORS, component.</p>