AngularJS+;TypeScript:无法注入$routeProvider
我正在尝试将路由应用到基于Typescript的Angular应用程序。应用程序应在$routeProvider中注入如下代码:AngularJS+;TypeScript:无法注入$routeProvider,angularjs,typescript,Angularjs,Typescript,我正在尝试将路由应用到基于Typescript的Angular应用程序。应用程序应在$routeProvider中注入如下代码: var app = angular.module("MyApp", ["ui.bootstrap"]); // app.service's and controller's here... app.config(["$routeProvider", function ($routeProvider: ng.IRouteProvider) {
var app = angular.module("MyApp", ["ui.bootstrap"]);
// app.service's and controller's here...
app.config(["$routeProvider",
function ($routeProvider: ng.IRouteProvider) {
$routeProvider
.when("/", {
controller: MyApp.Controllers.ItemsController,
templateUrl: "/Items.html"
})
// ... other routes ...
.otherwise({
redirectTo: "/"
});
}]);
无论如何,当我启动应用程序时,angular告诉我它找不到名为$routeProviderProvider的提供程序时出现异常:
错误:未知提供程序:$routeProviderProvider更新的答案:
就像我在下面的评论中提到的
e、 g.它在控制器中无效。仅供参考,您所谈论的“ProviderProvider”部分仅用于日志记录,而不是如何在内部搜索依赖项
并在您的代码中找到:
export class MainController {
static $inject = ["$scope", "$routeProvider"];
constructor(private $scope: IMainScope,
private $routeProvider: ng.IRouteProvider) {
}
}
控制器中不能有routeProvider。您的app.config是而不是导致错误的原因。将控制器更改为,错误将消失:
export class MainController {
static $inject = ["$scope"];
constructor(private $scope: IMainScope) {
}
}
此外,我建议在使用控制器时不要实现自己的作用域。原因如下:
希望你和我一样喜欢angular+typescript:)有什么用:ng.IRouteProvider
?这是typescript:它只是一个类型声明。类型来自。无论如何,代码被编译成JS,这没有任何实际效果。谢谢你Basarat!但除了在“神奇”字符串中仅仅改变大小写可能以类似的方式对框架产生不利影响这一事实听起来有点令人惊讶之外,这并不能解决我的问题。此外,所有其他服务都是毫无问题地注入的。无论如何,因为我是这里的一个傻瓜:),我用pascal套管或camel套管测试了fiddle,得到了相同的结果(都有效),并且我自己的应用程序也不起作用。一旦你转向“现实世界”场景,NG的学习曲线看起来更陡峭一些。还有其他想法吗?PascalCase不适用于此功能:请注意,如果您想在控制台上看到错误,您需要重新加载页面。因此,即使您有
,您仍然需要执行angular.module(“myApp”,[])再次感谢,我还没有完全理解你的评论。无论如何,这不是我的问题:我没有得到像“MyApp not found”这样的错误:我得到这个奇怪的错误,它是由于后缀“Provider”被附加到正在注入的$routeProvider上。我让我的应用程序名完全小写,没有任何变化。如果我删除$routeProvider注入,一切都会正常工作,直到我添加它,即使使用Pascal cased名称。所以我不确定这里到底出了什么问题。当你删除提供者时,你会得到$route,这与routeProvider不同。我不知道为什么它不适合你。我一直在为我工作,你可以从小提琴中看出它的作用。我确保小提琴也使用1.0.7。很抱歉,我发现您的代码没有其他错误:(
export class MainController {
static $inject = ["$scope"];
constructor(private $scope: IMainScope) {
}
}