Ceci est mon composant principal (le composant racine). Ici, je déclare certains services qui sont censés être accessibles à travers l'application entière.Angular2 - lorsque les deux services ont besoin l'un de l'autre
@Component({
...
providers: [
WebSocketService,
...
AuthenticationService,
]
})
export class MainComponent { ... }
Et - pour être sûr que evrybody comprendre - je fais:
bootstrap(MainComponent, [...]);
deux WebSocketService et AuthenticationService sont annotés avec @Injectable()
. Tout a bien fonctionné jusqu'à ce que je trouve que les deux services ont besoin l'un de l'autre. a besoin AuthenticationService WebSocketService pour communiquer avec le serveur back-end et a besoin WebSocketService AuthenticationService pour vérifier si est connecté l'utilisateur, etc.
En conséquence, je reçois ce message d'erreur:
EXCEPTION: ne peut pas résoudre tous les paramètres pour 'AuthenticationService' (indéfini). Assurez-vous que tous les paramètres sont décorés avec Inject ou ont des annotations de type valides et que 'AuthenticationService' est décoré avec Injectable.
Voici le fragment de AuthenticationService. WebSocketService est similaire.
@Injectable()
export class AuthenticationService implements OnInit {
constructor(private webSocketService:WebSocketService) {
}
...
}
Je sais, qu'il existe différents et peut-être de meilleures solutions pour ce cas (troisième service, etc.), mais ce n'est pas le point de ma question. Je voudrais savoir s'il existe un moyen d'injecter deux services l'un dans l'autre avec Angular2 de la même manière que je l'avais présenté?
Vous feriez mieux en corrigeant la référence circulaire au lieu d'utiliser forwardRef. –