У меня возникла проблема с преобразованием контроллеров в компоненты, готовые к моему приложению для Angular 2, но проблема в миграции не очень хорошо, у меня есть маршрутизатор ui-router между штатами и использованием разрешений в нескольких контроллерах, версия с контроллером работает, но версия компонентов теперь работает вообще, я следовал за множеством руководств и, кажется, делаю хорошо для кода, но не работает для меня.Угловые компоненты 1.5 с разрешением ui-router: Неизвестный поставщик
У меня есть следующие модуль с контроллером:
(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
}
}
});
}
})();
контроллер:
(function()
{
'use strict';
angular
.module('app.sample')
.controller('SampleController', SampleController);
/** @ngInject */
function SampleController(SampleData)
{
var vm = this;
vm.helloText = SampleData.data.helloText;
}
})();
Приведенный выше код работает хорошо, но после того, что делает его в качестве компонента его следующим образом:
(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
}
}
});
}
})();
Компонент:
(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;
}
})();
Но теперь он не работает и дает мне следующую ошибку:
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
Мои зависимости внутри 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"
}
Любая идея, в чем проблема, что мне не хватает?
Можете ли вы подтвердить, что у вас есть js, который содержит службу SampleData внутри index.html? – gyc
@gyc Я уже пишу файл js, но пока не перешел на ts, все еще используя угловую 1.5, готовясь ко второй фазе с ts позже, и я могу использовать 'myService' внутри контроллера, SampleData не является независимым сервисным сервисом, его переменной который разрешил внутренний модуль, как вы можете видеть в первом контроллере и модуле они работают. –