I am able to run the code from one javascript file. but when I want to separate services into a separate file(in customServices folder) it is giving an injector error:- unknown provider. Debugger when placed in my membershipService.js - it is hit but still throws an error.
Similarly, I am unable to separate routing to another file. It is giving the same error.
folder structure:-
public contollers 1. app.js
customservices 1. membershipService.js
views 1. membershipdetails.html 2. index.html
Index.html code:-
<head>
<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="stylesheets/style.css" rel="stylesheet">
<script
src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js">
</script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular-
route.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular-
resource.js"></script>
<script src="CustomServices/membershipService.js"></script>
<script src="ngRoute/viewroute.js" type="text/javascript"></script>
<script src="controllers/app.js"></script>
<script src="vendor/jquery/jquery.min.js"></script>
<script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
</head>
<div>
<div class="container pt-5">
<div ng-view></div>
</div>
</div>
controller code - app.js
var app = angular.module("tdmModule", ["ngRoute"]);
app.config(['$qProvider', function ($qProvider) {
$qProvider.errorOnUnhandledRejections(false);
}]);
app.config(['$routeProvider','$locationProvider',
function($routeProvider,$locationProvider) {
$routeProvider
.when("/", {
templateUrl : "home",
controller: 'homeController'
})
.when("/home", {
templateUrl : "home",
controller: 'homeController'
})
.when("/membershipdetails", {
templateUrl : "membershipdetails",
controller: 'membershipController'
})
.otherwise({redirectTo: '/'});
}]);
app.service("membershipService", function () {
this.jsondata = function(getdata){
var d = {};
console.log("Service calling " +getdata);
if(getdata != undefined && getdata.TopN != undefined){
d.TopN = getdata.TopN;
}
if(getdata != undefined && getdata.MemberNo != undefined){
d.MemberNo = getdata.MemberNo;
}
return d;
};
});
app.controller('membershipController', function($scope,$filter, $http,
$httpParamSerializer, $location, membershipService, setnotanoption,
compileservice) {
var absurl = $location.absUrl().split('/#!/')[1];
$scope.pagename = absurl;
app.controller('membershipController', function($scope,$filter, $http,
$httpParamSerializer, $location, membershipService, setnotanoption,
compileservice) {
var absurl = $location.absUrl().split('/#!/')[1];
$scope.pagename = absurl;
$scope.noOfColumn = false;
$http.get('http://localhost:3000/membership').then(function (res) {
var options = res.data;
$scope.options = options;
$scope.removeField = function(rmdata) {
setnotanoption.setNotAnOption(rmdata, false, options);
var myEl = angular.element( document.querySelector ("."+rmdata ) );
myEl.attr('ng-show',false);
compileservice.compile(myEl);
var btnEl = angular.element( document.querySelector("#btnEl" ) );
compileservice.compile(btnEl);
setnotanoption.setNotAnOption(rmdata, false, options);
};
$scope.deleteField = function (index){
$scope.rmdata.splice(index,1);
alert("JSON Name is deleted");
}
$scope.addField = function(data) {
if(data != undefined && data.optionSelect != null){
var myEl = angular.element(
document.querySelector("."+data.optionSelect ) );
myEl.attr('ng-show',true);
compileservice.compile(myEl);
setnotanoption.setNotAnOption(data.optionSelect, true, options);
}
};
});
});
NOTE:- IT Works till here. but once I move service code to different file as shown in beginning folder structure, it gives unknown provider error.
MY SERVICE CODE - WHERE I get error:-
var app = angular.module("tdmModule", ["ngRoute"]);
app.service("membershipService", function
($location,$rootScope,$http,$filter,$cookies,$timeout,$document,$window)
{
this.jsondata = function(getdata){
var d = {};
console.log("Service calling " +getdata);
if(getdata != undefined && getdata.TopN != undefined){
d.TopN = getdata.TopN;
}
if(getdata != undefined && getdata.MemberNo != undefined){
d.MemberNo = getdata.MemberNo;
}
if(getdata != undefined &&getdata.MemberStartDateHigh !=undefined){
d.MemberStartDateHigh = getdata.MemberStartDateHigh;
}
return d;
};
});
I have gone through 1. https://docs.angularjs.org/error/$injector/unpr 2. https://viralpatel.net/blogs/angularjs-service-factory-tutorial/ 3. AngularJS Service not working 4. Unknown Provider error using AngularJS
I am missing some conceptual thing I guess. Some code intentionally removed for readability.
My concept of service injection is its a simple js file which can be injected in any controller in the application and used as per application. It needs to be registered with correct folder structure as well.