(Angular 2 RC5を使用していることに注意してください)
簡単にするために、次のようなアプリがあります。
app.module.ts
@NgModule({
providers: [
RootService
],
entryComponents: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule {}
root.service.ts
import Dependency1 from './somewhere'
import Dependency2 from './somewhere-else'
@Component({
providers: [Dependency1, Dependency2]
})
@Injectable()
export class RootService {
constructor(
private dep1: Dependency1,
private dep2: Dependency2
) {...}
}
依存関係の例は次のとおりです。
依存関係 1.ts
@Injectable()
export class Dependency1{
public doGroundbreakingSciencyStuff() {...}
}
私の質問は次のとおりです。なぜ、上記で、次のようなエラーが表示されるのですか
No provider for PouchSync!
?
次のように、 app.module.tsproviders
の配列にDependency1 と Dependency2 を追加することで問題を解決できます。
app.module.ts (固定)
@NgModule({
providers: [
RootService,
Dependency1,
Dependency2
],
entryComponents: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule {}
これは非常に醜いようです。これらの依存関係についてのみRootService
知る必要があります。ここで何か間違ったことをしていますか?または、なぜこのようにしなければならないのか、誰かが説明できますか? 確かに、注入するときRootService
、インジェクターはそれが依存していることを確認できるDependency1
ためDependency2
、それらも注入する必要があるため、アプリケーション全体のシングルトンにもなります。