L'INTERFACE utilisateur du routeur Inconnu fournisseur pour l'injection de service en état d'enfant à résoudre
Obtenu Inconnu fournisseur lors de l'injection de service dans l'état d'enfant à résoudre fonction. Mais si défini à résoudre dans le parent de l'état, il fonctionne, tout simplement. Vous trouverez ci-dessous quelques exemples de codes:
J'ai défini un module de service
angular.module('services', [])
.factory('myService', function() {
//my service here
})
et initialiser l'application
var app = angular.module('app', ['services', 'ui.router']);
app.config(['$stateProvider', '$urlRouterProvider', function($stateProvider,
$urlRouterProvider) {
$stateProvider.state('wizard', {
url: '/wizard',
abstract: true
})
.state('wizard.step1', {
url: '/step1',
templateUrl: ... ,
resolve: {
name: function(myService) {
//do something with mySerice
}
},
controller: function(name) {
//controller codes here
}
})
}]);
J'ai obtenu l'erreur Inconnu fournisseur de se plaindre de myService dans l'assistant.etape 1 résoudre. Mais si j'ajoute un hasard résoudre dans le parent de l'état, comme les
$stateProvider.state('wizard', {
url: '/wizard',
abstract: true,
resolve: {
a: function() { return 1; }
}
})
puis, il fonctionne sans erreur. Me demande ce qui se passe ici?
Je ne vois pas quel est le problème. Si vous créez un violon qui montre le problème, je vais faire un essai.
D'accord avec @StephenFriedrich, cela a l'air bien. Je l'ai mis dans un plunk: plnkr.co/modifier/McZ97tJIuSIQnwRkDb8c?p=preview
Pourrait-il être que vous avez laissé une ng-controller dans l'partielle fichier HTML? Si oui, angulaire vais essayer d'instancier le contrôleur lors du chargement de la vue, à quel point 'nom' n'existe pas, de sorte que vous obtenez le message d'erreur. Voir ma réponse à celui-ci: stackoverflow.com/questions/27023887/...
D'accord avec @StephenFriedrich, cela a l'air bien. Je l'ai mis dans un plunk: plnkr.co/modifier/McZ97tJIuSIQnwRkDb8c?p=preview
Pourrait-il être que vous avez laissé une ng-controller dans l'partielle fichier HTML? Si oui, angulaire vais essayer d'instancier le contrôleur lors du chargement de la vue, à quel point 'nom' n'existe pas, de sorte que vous obtenez le message d'erreur. Voir ma réponse à celui-ci: stackoverflow.com/questions/27023887/...
OriginalL'auteur Yujun Wu | 2014-10-01
Vous devez vous connecter pour publier un commentaire.
Dans votre contrôleur, vous devez injecter votre service MyService, afin de définir quelque chose comme cela
Désolé, je n'ai pas compris que le problème était dans le résoudre j'ai donc modifier le code. Vous devez vous injecter votre service dans l'résolu fonction et dans votre contrôleur, vous devez injecter de la détermination des attributs (par exemple: "nom")
Fonctionne très bien à AngularJS 1.7.6
OriginalL'auteur Mathieu Bertin
Vous avez à injecter à votre service dans votre fonction config :
Une autre façon est d'intégrer résoudre votre code dans un service et affecter directement le service :
Assurez-vous. C'est pourquoi j'ai utilisé une "constante" qui définit une fonction dans mon exemple. C'est en fait la façon dont je suis en train de faire dans l'application en cours. Mais vous avez raison, ce n'est pas possible avec une "usine" ou un "service".
OriginalL'auteur benek
J'ai eu la même erreur.Essayez ce code. Ça fonctionne...
OriginalL'auteur Amar