2017-01-09 9 views
1

角度のサービスを作成しようとしています。そのサービス内に角度の$injector.get(...)を使用してサービスを取得しようとしています。 (私はそれを注入することができますが、手動で作成したいと思います)。サービス内でangular.injector()を使用するとエラーが発生する

何らかの理由で、私はこのエラーを取得しています:ここで

Uncaught Error: [$injector:unpr] Unknown provider:
$rootElementProvider <- $rootElement <- $location <- $urlRouter <- $state <- $location

(function() { 
    var $injector = angular.injector(["myApp"]);//Here is where I get the error 
    var myService= $injector.get("myService"); 

    var pseudoService = function(){ 
     var service = myService; 
     return{ 
      service:service 
     } 
    } 

    app.factory("pseudoService", pseudoService); 
}(angular)); 

は私が作ったplunkerです。 私はそれが問題を正確に示してくれることを願っています。

plunker

+0

何も(http://stackoverflow.com [角度からインジェクタを取得できません]のplunker –

+0

可能な重複して存在していない、あなたのインジェクタコンストラクタで最初の「NG」モジュールを追加することです/ question/13400687/cant-retrieve-the-injector-from-angular) –

答えて

1

app.js

https://plnkr.co/edit/5VA5XgbNiCAX0ZcjDADo?p=preview

であなたのコードが含まれています。このplunkerを参照してください、その作業罰金。

あなたはサービスが利用できないinjectorコードを書いていると、あなたはより多くの情報https://docs.angularjs.org/api/ng/function/angular.injectorため、angular.injector()機能でexplixitly ngを追加する必要があります。あなたがエラーに

index.htmlを

<!DOCTYPE html> 
<html ng-app="plunker"> 

    <head> 
    <meta charset="utf-8" /> 
    <title>AngularJS Plunker</title> 
    <script>document.write('<base href="' + document.location + '" />');</script> 
    <link rel="stylesheet" href="style.css" /> 
    <script data-require="[email protected]" src="https://code.angularjs.org/1.3.20/angular.js" data-semver="1.3.20"></script> 

    <script src="app.js"></script> 
    </head> 

    <body ng-controller="MainCtrl"> 
    <p>Hello {{name}}!</p> 
    </body> 

</html> 

app.js

var app = angular.module('plunker', []); 

app.controller('MainCtrl', function($scope) { 
    $scope.name = 'World'; 


    var $injector = angular.injector(['ng', 'plunker']); 
    var a = $injector.get('myService') 
    console.log(a); 
}); 

app.factory('pseudoService', pseudoService); 

var pseudoService = function(){ 
    var service = myService; 
    myService.sayHello(); 
    return{ 
    service:service 
    } 
} 



var myService = function(){ 
    var sayHello = function(){ 
    alert("Hello") 
    } 
    return{ 
    sayHello:sayHello 
    } 
} 

app.service('myService', myService); 
+0

これはコード内の別の場所に定義されており、別のサービスを表します – Joe

+0

表示されているエラーは、指定したコードに属していますか?そうでない場合は、そのコードを提供してください。それは依存性注入に関連しています –

+0

あなたのアプリで 'ui.router'を使用しましたか? –

関連する問題