我正在尝试将路由应用到基于Typescript的Angular应用程序。该应用程序应该为$ routeProvider注入如下代码:
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 的提供程序:
Error: Unknown provider: $routeProviderProvider <- $routeProvider at Error (<anonymous>)
at http://.../Scripts/angular.js:2734:15
at Object.getService [as get] (http://.../Scripts/angular.js:2862:39)
at http://.../Scripts/angular.js:2739:45
at getService (http://.../Scripts/angular.js:2862:39)
at invoke (http://.../Scripts/angular.js:2880:13)
at Object.instantiate (http://.../Scripts/angular.js:2914:23)
at $get (http://.../Scripts/angular.js:4805:24)
at $get.i (http://.../Scripts/angular.js:4384:17)
at forEach (http://.../Scripts/angular.js:137:20) undefined angular.js:5754
通过查看角度源(1.0.7),我可以看出这是因为在创建 instanceInjector 的第2737行,其名称来自附加名为 providerSuffix ,其值为“Provider”,与请求的提供者名称(此处为“$ routeProvider”)。因此,这导致例外。然而,正确的名称应该是“$ routeProvider”;如果我在我的代码中将其更改为“$ route”,则此错误会按预期消失,因为现在内置名称为“$ routeProvider”;但我得到另一个例外,告诉我服务“$ route”没有定义。那么,我该怎么做才能解决这个问题呢?
答案 0 :(得分:2)
更新回答: 就像我在下面的评论中提到的那样
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) {
}
}
此外,我建议在使用控制器时不要实现自己的范围。原因如下:http://www.youtube.com/watch?v=WdtVn_8K17E&feature=youtu.be&t=5m36s
希望你像我一样享受角度+打字稿:)