Javascript 用typescript编写的角度服务在控制器内未定义

Javascript 用typescript编写的角度服务在控制器内未定义,javascript,angularjs,typescript,Javascript,Angularjs,Typescript,我正在用typescript实现一个简单的angular应用程序。我将服务引用传递给控制器,但是当我尝试调用服务的方法时,我得到一个异常,表示服务引用未定义。dataAccessLayer模块作为控制器所属的clinicManager模块中的依赖项正确添加 我的服务: 控制员: app.js index.html 如果我在控制器中删除对Patient的引用,服务将得到正确的实例化,那么服务将正常工作。我将代码放在这里是为了更好地显示格式: module app.PatientDetails{

我正在用typescript实现一个简单的angular应用程序。我将服务引用传递给控制器,但是当我尝试调用服务的方法时,我得到一个异常,表示服务引用未定义。dataAccessLayer模块作为控制器所属的clinicManager模块中的依赖项正确添加 我的服务:

控制员:

app.js

index.html


如果我在控制器中删除对Patient的引用,服务将得到正确的实例化,那么服务将正常工作。我将代码放在这里是为了更好地显示格式:

module app.PatientDetails{

interface IPatientDetails{
     // patient: app.Model.IPatient;
 }

import accessLayer = app.dal.DataAccessService;

export class PatientDetailsCtrl implements IPatientDetails{

    private dataAccessService: accessLayer;

    static $inject = [/*'patient',*/'dataAccessService'];
    constructor(/*public patient:app.Model.IPatient,*/ dataAccessService:accessLayer){
        this.dataAccessService = dataAccessService;

    // The function is now called properly
    var patient = dataAccessService.get(1);

   }
}

  angular.module('clinicManager')
         .controller('patientDetailsCtrl', ['dataAccessService',PatientDetailsCtrl]);
}

您的脚本顺序正确吗?我用脚本顺序更新了请求。在我看来,顺序是正确的。
module app.PatientDetails{

interface IPatientDetails{
    patient: app.Model.IPatient;
}

import accessLayer = app.dal.DataAccessService;

export class PatientDetailsCtrl implements IPatientDetails{

    private dataAccessService: accessLayer;

    static $inject = ['patient','dataAccessService'];
    constructor(public patient:app.Model.IPatient, dataAccessService:accessLayer){
        this.dataAccessService = dataAccessService;

        // -> TypeError: Cannot read property 'get' of undefined
        var patient = dataAccessService.get(1);

    }
}

  angular.module('clinicManager')
         .controller('patientDetailsCtrl',['dataAccessService',PatientDetailsCtrl]);
 }
angular.module('clinicManager',['ngMaterial','dataAccessLayer']);
<!-- Application scripts-->
<script src="app.js"></script>

<!-- Services-->
<script src="DataAccessLayer/DataAccessService.js"></script>

<!-- Controllers-->
<script src="Controllers/PatientDetailsCtrl.js"></script>
module app.PatientDetails{

interface IPatientDetails{
     // patient: app.Model.IPatient;
 }

import accessLayer = app.dal.DataAccessService;

export class PatientDetailsCtrl implements IPatientDetails{

    private dataAccessService: accessLayer;

    static $inject = [/*'patient',*/'dataAccessService'];
    constructor(/*public patient:app.Model.IPatient,*/ dataAccessService:accessLayer){
        this.dataAccessService = dataAccessService;

    // The function is now called properly
    var patient = dataAccessService.get(1);

   }
}

  angular.module('clinicManager')
         .controller('patientDetailsCtrl', ['dataAccessService',PatientDetailsCtrl]);
}