AngularJS/TypeScript: 由于服务无法实例化模块
AngularJS/TypeScript: Failed to instantiate module due to service
我有一个服务:
module app {
export interface ISomeService {
doSomething(): string;
}
export class SomeService implements ISomeService {
doSomething() {
return "haaay.";
};
}
angular.module('app').service('someService', SomeService);
}
我有一个控制器:
module app {
export interface ISomeController {
doControllerThings(): string;
}
export class SomeController implements ISomeController {
static $inject = ['someService'];
constructor(private someService: ISomeService) { }
}
}
angular.module('app').controller('someController', SomeController);
}
我也有一个路由文件(使用ui-router):
module app {
'use strict';
angular
.module('app')
.config(config);
config.$inject = ['$stateProvider', 'someService'];
function config($stateProvider, someService) {
$stateProvider
.state('someState', {
url: '/Home/Hello/',
parent: 'home',
resolve: {
someValues() { return someService.doSomething(); }
},
views: {
'content@': {
templateUrl: /path/to/file/something.html',
controller: 'someController',
controllerAs: 'vm'
}
}
});
}
我一直收到这个错误,我不确定为什么:
Error: [$injector:modulerr] Failed to instantiate module app due to:
[$injector:unpr] Unknown provider: someService
我知道我的路由文件目前基本上使用的是纯文本 javascript,所以对于看了几个 TypeScript 示例后它变得很碍眼,我深表歉意。
编辑:进行了一些更新。错误 copy/paste 编辑。
重点是——我们不能要求将'someService'
注入.config()
阶段。在这种情况下,只能注入和配置 Providers。
因此,我们需要将服务的依赖项直接移动到 resolver
- someValues : ['someService', (someService) =>
... // 那就是要问的地方对于 'someService'。因为这会在.run()
阶段被调用
angular
.module('app')
.config(config);
config.$inject = ['$stateProvider' ];
function config($stateProvider) {
$stateProvider
.state('someState', {
url: '/Home/Hello/',
parent: 'home',
resolve: {
someValues : ['someService', (someService) =>
{ return someService.doSomething(); }]
},
views: {
'content@': {
templateUrl: 'path/to/file/something.html',
controller: 'someController',
controllerAs: 'vm'
}
}
});
};
实际查看 here
我有一个服务:
module app {
export interface ISomeService {
doSomething(): string;
}
export class SomeService implements ISomeService {
doSomething() {
return "haaay.";
};
}
angular.module('app').service('someService', SomeService);
}
我有一个控制器:
module app {
export interface ISomeController {
doControllerThings(): string;
}
export class SomeController implements ISomeController {
static $inject = ['someService'];
constructor(private someService: ISomeService) { }
}
}
angular.module('app').controller('someController', SomeController);
}
我也有一个路由文件(使用ui-router):
module app {
'use strict';
angular
.module('app')
.config(config);
config.$inject = ['$stateProvider', 'someService'];
function config($stateProvider, someService) {
$stateProvider
.state('someState', {
url: '/Home/Hello/',
parent: 'home',
resolve: {
someValues() { return someService.doSomething(); }
},
views: {
'content@': {
templateUrl: /path/to/file/something.html',
controller: 'someController',
controllerAs: 'vm'
}
}
});
}
我一直收到这个错误,我不确定为什么:
Error: [$injector:modulerr] Failed to instantiate module app due to:
[$injector:unpr] Unknown provider: someService
我知道我的路由文件目前基本上使用的是纯文本 javascript,所以对于看了几个 TypeScript 示例后它变得很碍眼,我深表歉意。
编辑:进行了一些更新。错误 copy/paste 编辑。
重点是——我们不能要求将'someService'
注入.config()
阶段。在这种情况下,只能注入和配置 Providers。
因此,我们需要将服务的依赖项直接移动到 resolver
- someValues : ['someService', (someService) =>
... // 那就是要问的地方对于 'someService'。因为这会在.run()
阶段被调用
angular
.module('app')
.config(config);
config.$inject = ['$stateProvider' ];
function config($stateProvider) {
$stateProvider
.state('someState', {
url: '/Home/Hello/',
parent: 'home',
resolve: {
someValues : ['someService', (someService) =>
{ return someService.doSomething(); }]
},
views: {
'content@': {
templateUrl: 'path/to/file/something.html',
controller: 'someController',
controllerAs: 'vm'
}
}
});
};
实际查看 here