74 votes

comment injecter la dépendance dans module.config (configFn) en angulaire

En mode angulaire, on peut injecter $ routeProvider dans la fonction de configuration

 module.config(function ($routeProvider) {


});
 

Je veux y injecter mon service comme

 module.config(function ($routeProvider, myService) {


});
 

Je suis sûr que le service est défini correctement, mais il lève une exception disant que unknown myService , événement que j'injecte

 module.config(function ($routeProvider, $http) {


});
 

il dit toujours unknown $http .

Est-ce que tu sais pourquoi?

95voto

Mark Rajcok Points 85912

À partir de Modules de page, section "Chargement du Module & Dépendances":

Des blocs de Configuration - exécuté pendant le fournisseur d'enregistrements et de la phase de configuration. Seuls les prestataires et les constantes peuvent être injectés dans des blocs de configuration. C'est pour empêcher l'activation accidentelle de l'instanciation de services avant d'avoir été entièrement configuré.

Exécuter des blocs - exécuté après l'injecteur est créé et sont utilisés pour démarrer l'application. Seules les instances et les constantes peuvent être injectés dans exécuter des blocs. C'est pour empêcher d'autres de la configuration du système lors de l'exécution de l'application du temps.

Donc vous ne pouvez pas injecter votre propre service, ou intégrés dans des services comme $http dans config(). Utilisation de run() à la place.

56voto

Jonas Rabbe Points 269

Je n'ai pas assez de réputation pour poster un commentaire, mais je voulais ajouter pour Marquer la réponse.

Vous pouvez inscrire des fournisseurs vous-même. Ils sont essentiellement des objets (ou constructeurs) avec un $get méthode. Lorsque vous vous inscrivez à un fournisseur de la version standard, il peut être utilisé comme un service ou d'une usine, mais un fournisseur de version peut être utilisée plus tôt. Ainsi, un grumpy fournisseur qui est inscrit comme

angular.module('...', [])
    .provider('grumpy', GrumpyProviderObject)

est alors disponible dans la config de la fonction en tant que

    .config(['grumpyProvider', ..., function (grumpyProvider, ...) { ... }])

et peut être injecté dans les contrôleurs simplement comme

    .controller('myController', ['grumpy', ..., function (grumpy, ...) { ... }])

L' grumpy objet qui est injecté dans myController est tout simplement le résultat de l'exécution de l' $get méthode sur l' GrumpyProviderObject. Remarque, le fournisseur de votre inscription peuvent également être régulièrement constructeur de JavaScript.

Remarque: selon le commentaire de @Problématique, que le fournisseur d'initialisation (l'appel à l' angular.module().provider(…) doit venir avant la fonction config à être disponibles.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X