我未能在UserAgent
函数中注入一个名为.config
的AngularJS Provider,但我收到此错误:
Uncaught Error: [$injector:modulerr] Failed to instantiate module app due to:
Error: [$injector:unpr] Unknown provider: UserAgent
这是我的配置:
angular
.module('app')
.config(Config);
Config.$inject = ['$routeProvider', 'UserAgent'];
function Config($routeProvider, UserAgent) {
/*** code here ***/
}
这是我的提供者:
angular
.module('app')
.provider('UserAgent', UserAgent);
function UserAgent() {
return {
$get: function () {
return {
title: "Testing..."
};
}
};
}
答案 0 :(得分:2)
更改' UserAgent'在&UserAgentProvider' ....
的以下行中
Config.$inject = ['$routeProvider', 'UserAgent'];
Config.$inject = ['$routeProvider', 'UserAgentProvider'];
应用程序公开的应用程序角度应该如何在相关应用程序中引用:<ActualProviderName>Provider
,单词&#39; 提供商&#39;附加到提供者的实际名称。
答案 1 :(得分:1)
很抱歉这个问题,但我在同样的问题上挣扎,幸运地找到了解决方案。我不是Angular专家所以我的解决方案可能会做得更好,但希望这可以帮助那些人。
查看AngularJS的providers文档,他们的示例说明:
myApp.provider('unicornLauncher', function UnicornLauncherProvider() {});
然后他们展示了如何将该提供者注入配置函数:
myApp.config(["unicornLauncherProvider", function(unicornLauncherProvider) {});
需要注意的重要事项是命名约定:提供者名称在声明时没有单词“Provider”,但是配置注入会这样做。
和你一样,我也在为我的配置使用命名函数。所以我的配置注入声明看起来像:
angular.module('sample').config(['UserAgentProvider', config]);
但是,使用.$inject
进样器,您的工作略有不同。所以你的最终解决方案看起来像:
angular.module('sample').config(config);
config.$inject = ['UserAgentProvider'];
我也使用。$ inject注入器,但因此改为AngularJS文档样式语法:
请注意,unicorn提供程序将注入config函数。此注入由提供程序注入器完成,该注入器与常规实例注入器不同,因为它仅实例化并连接(注入)所有提供程序实例。
不确定.config(['MyNamedProvider', NamedConfigFunction])
是否优于NamedConfigFunction.$inject = ['MyNamedProvider'];
但重要的一点是在提供者声明期间不要使用“提供者”,而是在注入提供者的过程中将其添加回来
答案 2 :(得分:0)
您可能无法在配置阶段使用服务。配置阶段用于配置服务提供者。完成后,将调用提供程序来创建服务。