AngularJS:不能将$ stateParams注入config

时间:2017-11-07 11:54:52

标签: angularjs

我试图访问路由器配置文件中stateParams对象的属性,但每当我尝试导入$ stateParams服务时,我都会收到错误。

 (function() {
    'use strict';
    angular
        .module('propertyDetails')
        .config([
            '$stateProvider',
            '$stateParams',
            routeConfig
        ]);

    function routeConfig($stateProvider, $stateParams) {
        console.log($stateParams)
    }
})();
导入

$stateProvider时没有任何问题,但stateParams我收到此错误:

Error: [$injector:modulerr] Failed to instantiate module propertyDetails due to:
Error: [$injector:unpr] Unknown provider: $stateParams

2 个答案:

答案 0 :(得分:2)

这是不可能的,因为配置功能在配置阶段when no services are available中运行。以下是文档中的插图:

enter image description here

您的方法有问题。为什么您需要直接访问模块$stateParams块中的config?您可以在定义以下状态时将其注入控制器:

(function () {
    'use strict';
    angular
        .module('propertyDetails')
        .config([
            '$stateProvider',
            routeConfig
        ]);

    function routeConfig($stateProvider) {
        $stateProvider
            .state('property.detail', {
                url: "/property/:propertyId",
                templateUrl: 'property.detail.html',
                controller: function ($stateParams) {
                    console.log($stateParams);
                }
            });
    }
})();

答案 1 :(得分:1)

您可以直接注入控制器的主要功能

angular
        .module('propertyDetails')
        .controller('TestController', TestController)

TestController.$inject = ['$scope',  '$stateParams'];
function TestController($scope, $stateParams) {
//your code
}