Ich habe ein Problem mit der Konvertierung von Controllern zu Komponenten für die Vorbereitung meiner Anwendung für Angular 2, aber das Problem, die Migration läuft nicht gut, ich habe den UI-Router zu routen zwischen den Zuständen und der Verwendung in einigen Controllern, die Version mit Controller funktioniert, aber die Version der Komponenten funktioniert jetzt überhaupt, ich folgte eine Menge von Leitfäden und scheint mir gut für Code, aber es funktioniert nicht für mich.Angular 1.5 Komponenten mit UI-Router Auflösung: Unbekannter Provider
Ich habe folgende Modul mit Controller:
(function() {
'use strict';
angular
.module('app.sample', [])
.config(config);
/** @ngInject */
$stateProvider
.state('app.sample', {
url : '/sample',
views : {
'[email protected]': {
templateUrl: 'app/main/sample/sample.html',
controller : 'SampleController as vm'
}
},
resolve: {
SampleData: function (myService) {
return myService.getSample(); // I return a promise here
}
}
});
}
})();
Regler:
(function()
{
'use strict';
angular
.module('app.sample')
.controller('SampleController', SampleController);
/** @ngInject */
function SampleController(SampleData)
{
var vm = this;
vm.helloText = SampleData.data.helloText;
}
})();
Der obige Code arbeitet gut, aber es als Komponente Nachdem ihre werden wie folgt:
(function() {
'use strict';
angular
.module('app.sample', [])
.config(config);
/** @ngInject */
function config($stateProvider) {
// State
$stateProvider
.state('app.sample', {
url: '/sample',
views: {
'[email protected]': {
template: '<sample></sample>'
}
},
resolve: {
SampleData: function (myService) {
return myService.getSample(); // I return a promise here
}
}
});
}
})();
Komponente:
(function() {
'use strict';
angular
.module('app.sample')
.component('sample', {
templateUrl: 'app/main/sample/sample.html',
bindings: {
},
controller: Sample
});
/** @ngInject */
function Sample(SampleData) {
var $ctrl = this;
$ctrl.helloText = SampleData.data.helloText;
}
})();
Aber seine jetzt nicht funktioniert und gibt mir die folgende Fehlermeldung:
Error: [$injector:unpr] Unknown provider: SampleDataProvider <- SampleData
http://errors.angularjs.org/1.5.7/$injector/unpr?p0=SampleDataProvider%20%3C-%20SampleData
at angular.js:68
at angular.js:4502
at Object.getService [as get] (angular.js:4655)
at angular.js:4507
at getService (angular.js:4655)
at injectionArgs (angular.js:4679)
at Object.invoke (angular.js:4701)
at $controllerInit (angular.js:10234)
at nodeLinkFn (angular.js:9147)
at angular.js:9553
Meine Abhängigkeiten innerhalb bower.json:
"dependencies": {
"angular": "1.5.7",
"angular-animate": "1.5.7",
"angular-aria": "1.5.7",
"angular-cookies": "1.5.7",
"angular-material": "1.1.0-rc.5",
"angular-messages": "1.5.7",
"angular-resource": "1.5.7",
"angular-sanitize": "1.5.7",
"angular-ui-router": "1.0.0-beta.1",
"jquery": "2.2.4",
"mobile-detect": "1.3.2",
"moment": "2.13.0"
}
Irgendeine Idee, was das Problem, was ich vermisse?
Können Sie bestätigen, dass Sie die js haben, die den Service SampleData in index.html enthält? – gyc
@gyc ich schreibe bereits die js-datei, noch nicht zu ts bewegt, immer noch mit eckigen 1.5 vorbereitung auf die zweite phase mit ts später, und ich kann 'myService' in der controller, SampleData nicht unabhängige service service, es ist eine variable das hat innerhalb des Moduls aufgelöst, wie Sie im ersten Controller und Modul sehen können, arbeiten sie. –