我为角度js创建了一个小代码库。我在我的库的主模块中创建了一个.config
方法,该方法取决于我的moduleConfigProvider
。我希望我的库的用户在app.config阶段(在应用程序启动时尽快)调用我的配置提供程序上的.configure。
问题是我的模块中的.config似乎在主app模块的app.config之前运行。我该如何解决这个问题?
e.g。这就是我消耗配置的方式。我需要在.config阶段使用它,因为我需要配置$ httpProvider。
之类的东西// this module provides initial configuration data for module
angular.module('mymodule')
.config(['$httpProvider', 'someOptionsProvider', 'myConfigProvider',
function ($httpProvider, someOptionsProvider, myConfigProvider) {
console.log("Consuming config now: ", myConfigProvider.config);
}])
以下是配置提供程序:
angular.module('mymodule.config')
.provider('myConfig', function() {
var _this = this;
_this.configure = configureMethod;
_this.config = {};
function configureMethod(configData) {
_this.config = configData;
console.log("Config set to:", configData);
};
this.$get = function() {
return _this;
};
});
最后这是我的app.config:
angular.module('app')
.config(['myConfigProvider', function(myConfigProvider) {
console.log("Running App config:", myConfigProvider);
var config = { a: 1 };
console.log("Config ready to send:", config);
myConfigProvider.configure(config);
}])
;
答案 0 :(得分:1)
好的,这很简单,只需在提供者函数中使用其他提供程序作为依赖项。
检查以下代码段
details: IDetail[] = [];

angular.module('mymodule', [])
.provider('myConfig', [
'$httpProvider',
function($httpProvider) {
var _this = this;
_this.configure = configureMethod;
_this.config = {};
function configureMethod(configData) {
//Do here anything with the $httpProvider
_this.config = configData;
console.log("Config set to:", configData);
console.log('Configuring $httpProvider')
};
this.$get = function() {
return _this;
};
}
])
angular.module('app', ['mymodule'])
.config(['myConfigProvider', function(myConfigProvider) {
console.log("Running App config:");
var config = {
a: 1
};
console.log("Config ready to send:", config);
myConfigProvider.configure(config);
}]);