J'ai essayé de suivre un exemple dans le ng-book 2 et j'ai rencontré des difficultés dans le chapitre DI.Injection de dépendances Angulaire 2: Impossible de résoudre tous les paramètres (pas de chaîne de dépôt, pas de canon)
@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 { }
est ici un plunker https://plnkr.co/edit/KSXE9tnRj4tffiISyp0i cela fonctionne totalement lors de la création du ReflectiveInjector manuellement, mais lorsque je tente de prendre la voie facile et le déclarer dans les fournisseurs sur le NgModule il ne parvient me donner « ne peut pas résoudre toutes les dépendances pour AppComponent ". J'ai vérifié les autres réponses et comme vous le voyez il n'y a pas de problèmes circulaires ni de problèmes liés au tonneau - tout est dans un seul fichier. Tous les indices seraient appréciés!
Si MyService est dans le même module, je pense qu'il devrait être déclaré dans les déclarations et, si elle est dans un module séparé, il devrait être dans les importations tableau, avez-vous essayé cela? – MikeDub
J'ai essayé d'ajouter MyService au tableau de déclarations NgModule dans le plunker et cela a produit l'erreur suivante: (SystemJS) Erreur: Valeur inattendue 'MyService' déclarée par le module 'AppModule' – user2072027
Désolé, cela s'applique uniquement aux composants. Toutefois, essayez d'ajouter des fournisseurs: [MyService] dans les métadonnées AppComponent sous le sélecteur/modèle. – MikeDub