使用JavaScript和TypeScript的Angular 1依赖性注入
我正在试图找出如何在现有的Angular 1.5应用程序中使用TypeScript。我不知道如何注入自定义服务。角度服务和第三方服务工作正常。我需要注入的服务仍然是香草JS服务。在下面的示例中,我需要注入reportService 我得到的错误是getReportById不是函数使用JavaScript和TypeScript的Angular 1依赖性注入,javascript,angularjs,typescript,dependency-injection,Javascript,Angularjs,Typescript,Dependency Injection,我正在试图找出如何在现有的Angular 1.5应用程序中使用TypeScript。我不知道如何注入自定义服务。角度服务和第三方服务工作正常。我需要注入的服务仍然是香草JS服务。在下面的示例中,我需要注入reportService 我得到的错误是getReportById不是函数 class ReportController implements IReportController { static $inject = ['$stateParams', 'reportService']
class ReportController implements IReportController {
static $inject = ['$stateParams', 'reportService'];
constructor(private $stateParams: angular.ui.IStateParamsService, private reportService) {
this.getReport($stateParams.id);
}
getReport(id: number): object {
reportService.getReportById(id)
.then(function(res) {
console.log(res)
});
}
}
这是服务
angular.module('reportsServiceModule', [])
.factory('reportsService', [
'$http',
reportsService
]);
function reportsService(
$http
) {
'use strict';
var service = {};
service.getReportById = function(reportID) {
return 'A promise';
};
return service;
}
这是个打字错误
您定义了一个报告s服务
.factory(“报告服务”)
但是注入了一个不同的
静态$inject=['$stateparms','reportService']
在AngularJS中,JS和TS开发之间唯一的真正区别在于可以键入单元。这只会影响类型安全 就在这里
interface IReportService {
getReportById: (someType) => string;
}
...
constructor(
private $stateParams: angular.ui.IStateParamsService,
private reportService: IReportService
) {
...
依赖注入没有问题。若你们在角度上有DI问题,你们会从喷油器得到一个错误
这里真正的问题是没有使用严格模式。使用使用strict
语句,否则错误将显示真正的错误-reportService
变量未在getReport
方法中定义
相反,它应该是
getReport(id: number): object {
this.reportService.getReportById(id)
...
什么是reportService?reportService是用JavaScript编写的常规angular 1服务(可以是任何服务)(无类型脚本)。请提供代码。这很重要。对于任何服务,您都可以使用
any
类型,但您不会从TS中受益。你对上面的代码有什么特别的问题吗?添加任何代码都不能解决这个问题,我已经添加了服务结构。确实有输入错误。然而,它是在问题中提出的,而不是在原始代码中提出的。否则会出现DI错误,而不是“getReportById不是函数”。谢谢,我在当天晚些时候发现了这一点,这就是问题所在。我的构造函数也有一个顺序问题,我添加了另一个上面没有显示的变量,没有意识到它也会破坏注入。