Was ist der Unterschied zwischen @Inject und @Injectable in Angular 2 typescript

Ich verstehe nicht, wann Sie @Inject und wann Sie @Injectable verwenden sollen?

  import {Component, Inject, provide} from '@angular/core';
    import {Hamburger} from '../services/hamburger'; 
    export class App {
       bunType: string;
       constructor(@Inject(Hamburger) h) {
         this.bunType = h.bun.type;
       }
     }

Und.

  import {Injectable} from '@angular/core';
    import {Bun} from './bun';
    @Injectable()
    export class Hamburger {
      constructor(public bun: Bun) {
      }
    }

Antworten auf die Frage(4)

Ihre Antwort auf die Frage