Mam do czynienia z problemem z konwersją kontrolerów na komponenty przygotowujące moją aplikację dla Angular 2, ale problem migracji nie idzie dobrze, mam router do routingu między stanami i używanie rozwiązania w kilku kontrolerach, wersja z kontrolerem działa, ale wersja składników w ogóle działa, śledziłem wiele przewodników i wydaje mi się, że robię dobrze dla kodu, ale to nie działa dla mnie.Angularne komponenty 1.5 z rozwiązaniem dla interfejsu użytkownika: nieznany dostawca
mam następujące modułu z sterownika:
(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
}
}
});
}
})();
kontroler:
(function()
{
'use strict';
angular
.module('app.sample')
.controller('SampleController', SampleController);
/** @ngInject */
function SampleController(SampleData)
{
var vm = this;
vm.helloText = SampleData.data.helloText;
}
})();
Powyższy kod działa dobrze, ale po czyni go jako składnika jego stać się tak:
(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
}
}
});
}
})();
Komponent:
(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;
}
})();
Ale teraz jej nie działa i daje mi następujący błąd:
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
Moje zależności wewnątrz 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"
}
Każdy pomysł, jaki jest problem, czego mi brakuje?
Czy możesz potwierdzić, że masz js zawierający usługę SampleData w index.html? – gyc
@gyc Już piszę plik js, jeszcze nie przeniesiony do ts, wciąż używając kątowego 1.5 przygotowuję się do drugiej fazy z ts później, i mogę użyć 'myService' wewnątrz kontrolera, SampleData nie jest niezależną usługą serwisową, jest zmienną który rozwiązał wewnętrzny moduł, jak widać w pierwszym sterowniku i module, który działają. –