/ / Démarrage du service Angular 2 - service, angular

Démarrage du service Angular 2 - service, angular

Est-il possible d'exécuter un service en angulaire 2au démarrage? bootstrap n’exécute pas le contrôleur du service. De plus, l'injecteur exécute le contrôleur du service chaque fois qu'il y a une injection du service dans un composant. Existe-t-il un moyen de rendre le service unique et de s'assurer que le ctor ne s'exécutera qu'une fois?

Réponses:

2 pour la réponse № 1

Ajoutez le service uniquement pour démarrer et non pour les fournisseurs dans vos composants. Si vous l'injectez dans votre AppComponent, il ne sera instancié qu'une seule fois.

L'ajout du service aux fournisseurs d'un composant crée une nouvelle instance pour chaque instance de composant.


1 pour la réponse № 2

Bootstrap ne lancera pas le service, c’est une classe consommatrice qui injectera le service. En l’énumérant dans bootstrap, vous obtiendrez singleton.

Si vous suivez la convention consistant à répertorier vos services injectables (LogRepository) dans le bootstrap, tous les services seront singleton. (Comme dans LogRepository) bootstrap(TheApp, [HTTP_PROVIDERS,LogRepository]);

Vous pouvez obtenir plus d'instances de services injectables si vous les répertoriez en tant que fournisseurs sur un composant, mais en commençant, répertoriez-les simplement dans le fichier bootstrap (). Tous singleton alors.