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. Это делает уколы для вас.

Другие вопросы по тегам