私はng-book 2の1つの例を実行しようとしていて、DIの章で問題に遭遇しました。角2依存性注入:すべてのパラメータを解決できません(デップチェーンなし、バレルなし)
@Component({
selector: 'app-root',
template: `
<button (click)="invokeService()">Get Value</button>
`
})
export class AppComponent {
constructor(public myService: MyService) {}
invokeService() {
console.log(this.myService.getValue());
}
}
@Injectable()
export class MyService {
getValue(): string {
return 'a value';
}
}
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule
],
providers: [MyService],
bootstrap: [AppComponent]
})
export class AppModule { }
はここに手動でReflectiveInjectorを作成するとき、それは完全に動作しますplunker https://plnkr.co/edit/KSXE9tnRj4tffiISyp0iだが、私は簡単な方法を取ると、それは私を与える失敗NgModule上のプロバイダでそれを宣言しようとすると、「AppComponentのすべての依存関係を解決できません。 "私は他の答えをチェックし、円形のデープやバレル関連の問題はないことがわかります。それはすべて1つのファイルにあります。どんなヒントもありがとう!
MyServiceでは、同じモジュール内にある場合、私はそれは別々のモジュールである場合、それが輸入品である必要があり、同様の宣言の中で宣言されるべきだと思いますアレイ、それを試してみましたか? – MikeDub
プランナー内のNgModule宣言配列にMyServiceを追加しようとしましたが、次のエラーが発生しました:(SystemJS)Error:モジュール 'AppModule'によって宣言された予期しない値 'MyService' – user2072027
スクラップは申し訳ありません。ただし、セレクタ/テンプレートの下のAppComponentメタデータにプロバイダ[MyService]を追加してみてください。 – MikeDub