title: What does multi:true mean in providers in angular4
body: <p>I am using <code>HTTP_INTERCEPTORS</code> in angular4. For this, I have created <code>HttpServiceInterceptor</code> class that implements <code>HttpInterceptor</code> interface and provide the defintion for <code>intercept</code> method. Then registered provider for <code>HTTP_INTERCEPTORS</code> like this</p>
  
  <pre><code>providers: [{
      provide: HTTP_INTERCEPTORS,
      useClass: HttpServiceInterceptor,
      multi: true
  }],
  </code></pre>
  
  <p>and this is working fine. But still I don't understand what does <code>multi:true</code> mean here? I have read <a href="https://stackoverflow.com/a/38144889/2172547">this answer</a>. </p>
  
  <p>If I remove <code>multi:true</code> option then there is an error on browser side</p>
  
  <pre><code>Uncaught Error: Provider parse errors:
  Mixing multi and non multi provider is not possible for token InjectionToken_HTTP_INTERCEPTORS ("[ERROR -&gt;]"): in NgModule AppModule in ./AppModule@-1:-1
      at NgModuleProviderAnalyzer.webpackJsonp.487.NgModuleProviderAnalyzer.parse (vendor.js:36335)
      at NgModuleCompiler.webpackJsonp.487.NgModuleCompiler.compile (vendor.js:43184)
      at JitCompiler.webpackJsonp.487.JitCompiler._compileModule (vendor.js:51527)
      at vendor.js:51472
      at Object.then (vendor.js:26354)
      at JitCompiler.webpackJsonp.487.JitCompiler._compileModuleAndComponents (vendor.js:51470)
      at JitCompiler.webpackJsonp.487.JitCompiler.compileModuleAsync (vendor.js:51399)
      at PlatformRef_.webpackJsonp.0.PlatformRef_._bootstrapModuleWithZone (vendor.js:4746)
      at PlatformRef_.webpackJsonp.0.PlatformRef_.bootstrapModule (vendor.js:4732)
      at Object.&lt;anonymous&gt; (app.js:23366)
  </code></pre>
  
  <p>Does this mean <code>HTTP_INTERCEPTORS</code> is multi-provider that initializes multiple directives or components? If so then what are other directives and components?</p>