DI は、アプリケーションで同じサービスを使用し、必要に応じて変更できるようにするために実装されていると思いました。ただし、このスニペット (Angular 2.0.0-beta.0) は機能しません。
# boot.ts
import {ProjectService} from './project.service'
bootstrap(AppComponent, [ProjectService]);
# my.component.ts
export class MyComponent {
constructor(project: ProjectService) {
}
}
明示的なサービス要件があれば、次のように機能します。
# my.component.ts
import {ProjectService} from './project.service';
export class MyComponent {
constructor(project: ProjectService) {
}
}
公式ドキュメントには多少の一貫性がありませんが、plunkr の例でも同じです。
# boot.ts
import {HeroesListComponent} from './heroes-list.component';
import {HeroesService} from './heroes.service';
bootstrap(HeroesListComponent, [HeroesService])
# heroes-list.component.ts
import {HeroesService} from './heroes.service';
これは意図した DI の使用方法ですか? サービスを必要とするすべてのクラスにサービスをインポートする必要があるのはなぜですか? また、起動時にサービスを一度だけ記述できない場合の利点はどこにありますか?