0

背景:
私が取り組んでいるアプリでは、2 つの場所で使用されているコンポーネントがあります。ある場所では、マテリアル デザインbottomSheetシステムから呼び出されています。別の例では、ui-router 状態システムを介してコンポーネントを直接使用しています。

これが問題を引き起こしているセットアップです。適切なパッケージの依存関係がすべて設定されているステートメントを既に取得していangular.moduleます - 私はチームと一緒にこのアプリに何ヶ月も取り組んできましたが、問題は具体的には以下のコードであり、追加したばかりです。

routes.ts

namespace Main {
    RouteConfig.$inject = ['$stateProvider'];

    function RouteConfig($stateProvider) {
        $stateProvider
            .state('main.myAwesomeFeature', {
                url: '^/myawesomefeature',
                component: 'awesomefeature',
                resolve: {
                    awesomeDefaults: () => new Controllers.AwesomeDefaults(1, 2, 3)
                }
            });

        // Other routing minutiae, unimportant to the question
    }

    angular.module('app').config(RouteConfig)
}

awesomefeature.ts

namespace Controllers {
    export class AwesomeDefaults {
        public constructor(
            number1: number,
            number2: number,
            number3: number
        ) {
        }
    }

    export class AwesomeFeatureCtrl {
        public static $inject: string[] = [
            'awesomeDefaults'
        ];
        public controller(
            public awesomeDefaults: AwesomeDefaults
        ) {               
        }

        // ...Other methods and irrelevant stuff...
    }

    angular
        .module('app')
        .controller('awesomeFeatureCtrl', AwesomeFeatureCtrl);
}

namespace Components {
    export var awesomeFeatureCmpt: ng.IComponentOptions = {
        bindings: {},
        controller: 'awesomeFeatureCtrl',
        controllerAs: '$ctrl',
        templateUrl: '(Irrelevant, as is the HTML)'
    };

    angular
        .module('app')
        .component('awesomefeature', awesomeFeatureCmpt);
}

問題: 「Awesome Feature」に直接移動しようとすると、HTML がレンダリングされないだけでなく、次のコンソール エラーが表示されます。

angular.js:14525 Error: [$injector:unpr] Unknown provider: awesomeDefaultsProvider <- awesomeDefaults <- awesomeFeatureCtrl  
http://errors.angularjs.org/1.6.4/$injector/unpr?p0=awesomeDefaultsProvider%20%3C-%20awesomeDefaults%20%3C-%20awesomeFeatureCtrl  
    at angular.js:66  
    at angular.js:4789  
    at Object.getService [as get] (angular.js:4944)  
    at angular.js:4794  
    at getService (angular.js:4944)  
    at injectionArgs (angular.js:4969)  
    at Object.invoke (angular.js:4995)  
    at $controllerInit (angular.js:10866)  
    at nodeLinkFn (angular.js:9746)  
    at angular.js:10154  

何らかの理由で、$stateProvider.state({resolve})が my を適切に解決awesomeDefaultsして値を に注入していないようawesomeFeatureCtrlです。

質問:
思った通りに動か ないのはなぜresolveですか?

私の理解では、 UI Router Documentationresolveに従って、オブジェクトは名前付きの各インデックスを取得し、その上にある関数を実行してから、ルート内のモノのコントローラーに解決します。明らかに私が何かを覚えていないか、誤解している。

4

1 に答える 1