Inyección de Dependencias en Angular

La inyección de dependencias no es ni mas ni menos que pasar la instancia de una clase (un objeto) como argumento del constructor de otra.

Según cada lenguaje de programación o framework esto se puede conseguir de diferentes maneras.

En Angular esto se consigue siguiendo estos pasos:

export class CustomDateProvider {  
  public formatDate(input: Date): string {
      return "[" + input.getFullYear() + "][" + input.getMonth() + "][" + input.getDay() + "]";
  }
}
import {Injectable} from '@angular/core';

@Injectable()
export class CustomDateProvider {  
  public formatDate(input: Date): string {
      return "[" + input.getFullYear() + "][" + input.getMonth() + "][" + input.getDay() + "]";
  }
}
import {bootstrap} from '@angular/platform-browser-dynamic';
import {AppComponent} from './app.component';
import {CustomDateProvider} from './svc.date';

bootstrap(AppComponent, [CustomDateProvider]);
import {Component} from '@angular/core';
import {CustomDateProvider} from './services.date';

@Component({
  selector: 'demo-app',
  templateUrl: 'app/app.component.html',
  providers:  [CustomDateProvider]
})
export class AppComponent {
  public currentDate : string;  
  public constructor(private _dateProvider : CustomDateProvider) {
    this.currentDate = _dateProvider.formatDate(new Date());
  }
}

Saludos!