angulaire 6 de l'injection de dépendances
De la dernière version Angulaire 6, un service est inscrit dans un module à l'aide de la providedIn
propriété dans le service de métadonnées:
@Injectable({
providedIn: 'root',
})
export class HeroService {}
Toutefois, la documentation reste également fait référence à l'inscription au service dans le module providers
tableau dans le module de métadonnées comme nous l'avons fait dans Angulaire 5:
@NgModule({
providers: [HeroService],
})
export class AppModule {}
Donc,
- De la méthode qui devrait être utilisée pour faire de l'injecteur de la connaissance du service qu'il doit injecter?
- Sera le module
providers
méthode de la baie être obsolète?
- C'est expliqué ici angulaire.io/guide/...
Vous devez vous connecter pour publier un commentaire.
Fondamentalement, vous pouvez utiliser, Mais aussi par de nouveaux CLI
provideIn
seront automatiquement ajoutés lors de la créationservice
providedIn
Pour plus d'informations, veuillez consulter ici
root
par défaut.Comme toujours lorsque plusieurs solutions sont disponibles, cela dépend de ce que vous voulez atteindre. Mais la documentation vous donne une directive à choisir.
Donc, fondamentalement, vous utilisez
providedIn: 'root'
pour les services qui sont d'application large. Pour les autres services de continuer à utiliser l'ancienne version.N'oubliez pas que sur vous déjà eu le choix de fournir des services de manière différente. Par exemple, il est aussi possible de déclarer Injectables au niveau des composants (ce qui ne change pas en V6).
De cette façon, le service n'est disponible que dans
MyComponent
et de ses sous-composants de l'arbre.Si Vous utilisez angulaire 5+ développeur, il va créer automatiquement les injectables service lorsqu'ils sont déclarés comme providedIn: 'root', dans ce cas, vous ne sera pas nécessaire d'importer le service dans l'app.le module.ts. Vous pouvez l'utiliser directement dans un autre composant.
La
@NgModule()
et@Component()
décorateurs ont les fournisseurs de métadonnées option, où vous pouvez configurer les fournisseurs pour NgModule de niveau ou de niveau composant injecteurs.L' @Injectable() décorateur a la providedIn option de métadonnées, où vous pouvez spécifier le fournisseur de l'décoré de la classe du service à la racine de l'injecteur, ou avec l'injecteur pour un NgModule.
Dans votre cas, parce qu'il a été providedIn à la "racine" de niveau, sans avoir besoin de l'ajouter de nouveau en tant que fournisseur dans le module.
Plus sur L'Injection De Dépendance Ici