AngularJS: route.resolve в ES6
Я пытаюсь реорганизовать существующий Angular-Project для использования модулей ES6 и import
заявления. Это работает для большинства приложений, но resolve
блоки в моих маршрутах доставляют мне неприятности.
Насколько я могу сказать, синтаксис должен быть таким же, как и раньше:
$stateProvider.state('stateName'), {
template: <div></div>
controller: 'stateCtrl'
controllerAs: 'ctrl'
resolve: {
someData: ['DataService', function(DataService){
return DataService.getData();
}]
}
}
Однако установка точки останова в someData
говорит мне, что мой 'DataService' не разрешен должным образом путем внедрения зависимости angulars (или, скорее: он разрешен правильно, но еще не был инициализирован). Сервис регистрируется в соответствующем модуле, но его конструктор не вызывался до входа в someData
-функции.
Так как я думал, что неправильно понял синтаксис, я немного поэкспериментировал и обнаружил, что некоторые другие Сервисы (созданы с тем же синтаксисом и зарегистрированы в том же модуле, что и DataService
) фактически инициализируются и правильно вводятся в блоке разрешения.
У вас есть идеи, где искать или как я могу устранить эту проблему?
1 ответ
Если вы используете ES6, это должно быть так:
/* @ngInject */
export default function config($stateProvider) {
resolve: {
/* @ngInject */
someData: (DataService) => DataService.getData()
}
}
Чтобы прочитать немного больше о ngInject, смотрите страницу ggub ng-annotate. Это делает уколы для вас.