0

importES6 モジュールとステートメントを使用するために、既存の Angular プロジェクトをリファクタリングしようとしています。これはほとんどのアプリケーションで機能しますがresolve、ルートのブロックが原因で問題が発生します。

私が知る限り、構文は以前と同じである必要があります。

$stateProvider.state('stateName'), {
    template: <div></div>
    controller: 'stateCtrl'
    controllerAs: 'ctrl'
    resolve: {
        someData: ['DataService', function(DataService){
            return DataService.getData();
        }]
    }
}

ただし、ブレークポイントを設定するsomeDataと、「DataService」が angulars 依存性注入によって適切に解決されていないことがわかります (または、適切に解決されていますが、まだ初期化されていません)。サービスは対応するモジュールに登録されますが、そのコンストラクターは関数に入る前に呼び出されませんでしたsomeData

構文が間違っていると思ったので、少し実験したところ、他のいくつかのサービス (同じ構文で作成され、 と同じモジュールに登録されているDataService) が実際に初期化され、resolve-block 内に正しく挿入されていることがわかりました。

どこを見ればいいのか、またはこれをトラブルシューティングする方法はありますか?

4

1 に答える 1

1

ES6 を使用している場合は、次のようになります。

/* @ngInject */
export default function config($stateProvider) {
  resolve: {

    /* @ngInject */
    someData: (DataService) => DataService.getData()
  }
}

ngInject の詳細については、ng-annotate github ページを参照してください。それはあなたのために注射をします。

于 2016-11-17T08:28:57.337 に答える