0
votes

Service angulaire pour NGModule particulière

Je suive le Documentation angulaire et essayer de fournir un service (Chrestervice) à un module particulier (CommandesModule). Après avoir importé le service sur une composante (ordonnance de commande), je reçois une erreur. Quelqu'un pourrait-il me dire que ce que je fais mal ici?

Voici un lien à mon code Stackblitz. p>

ordre.service.ts p> xxx pré>

ordre-list.component.ts p> xxx pré >

Je reçois l'erreur suivante: P>

Error: Uncaught (in promise): 
Error: StaticInjectorError(AppModule)[OrderListComponent -> OrderService]:
StaticInjectorError(Platform: core)[OrderListComponent -> OrderService]:
NullInjectorError: No provider for OrderService!


0 commentaires

3 Réponses :


2
votes
  1. la plupart du temps, utilisez fourniin = 'root' à l'intérieur de votre service. Ce sera enregistrer le service avec l'injecteur d'applications racine, sera arboré secoué et sera disponible pour tout composant qui en a besoin. L'arbre tremblant assurera que le service n'est inclus que dans les paquets où il est utilisé.
  2. Utilisez le tableau des fournisseurs dans un composant si le service n'a besoin que de être fourni dans le composant et ses enfants imbriqués.
  3. Il n'est pas conseillé d'utiliser des fournisseurs dans un module.

    Utiliser fournitine = 'ordresModule' si vous voulez Limitez l'accès à un service à un module chargé paresseux particulier (Mododule de commande). Il aura alors besoin d'un module supplémentaire pour empêcher la circulaire Problème de dépendance.

    Ceci fournit une isolation de service au module niveau. Si un autre composant de l'application en dehors de cette Le module chargé paresseux tente de référencer le service un "hors de Scope d'injecteur "Erreur est générée.

    Voir cette Réponse


0 commentaires

0
votes

On dirait qu'il y ait un Ouvrir le problème à ce sujet.

Et si vous devez fournir un service strictement dans un module paresseux que vous avez dans votre exemple, vous avez deux options:

  1. https://stactblitz.com /edit/angular-pzwmza?file=src/app/orders/orders.module.ts
  2. https: // Stackblitz .com / Edit / angulaire-lazy-load-jxjhfw? File = App% 2Fabout% 2Fabout.Service.ts

0 commentaires

0
votes

Vous devez ajouter checkerervice dans les fournisseurs (code> tableau ordresModule . Voici un guide Comment utiliser fourni dans et service . https://angular.io/guide/providers#providedin-and-ngmodules


0 commentaires