Angular Typescript Controller构造函数未调用

时间:2016-03-13 17:22:34

标签: angularjs typescript

我正在使用Angular类型脚本。

我在类型脚本中有模型类

</div>

使用类型脚本的我的Controller代码就像这样

module app.form {

    export class Patient{

        constructor(
            public firstName: string,
            public lastName: string,
            public gender: string,
            public birthDate: Date,
            public currentMedications: string,
            public notes: string,
            public isMedicare: boolean,
            public medicareName: string,
            public medications: string[],
            public ethnicity: string[],
            public billingInfo: BillingInformation,
            public specimenInfo: SpecimenInformation,
            public assayRequested: AssayRequested,
            public authorizationDetail: AuthorizationDetail
        ) {

        }
    }
}

我的app文件看起来像这样。

module app.form {
    export class MainController {
        constructor(public patient: Patient) {

        } 
    }   
}

我按此顺序在html文件中注册所有脚本

module app.form {
    angular
        .module("formApp", [
            "ngMaterial",
            "ngMdIcons",
            "ngMessages"
        ])
        .controller("MainController", MainController);
}

当我运行我的应用程序时,我看到了这个错误

enter image description here

我做错了什么?

2 个答案:

答案 0 :(得分:1)

要解决错误,必须在使用typescript

时在控制器中使用静态$ inject
static $inject = [];

答案 1 :(得分:0)

通常,您不会注入数据,而是从服务中检索数据。数据我的意思是你的主控制器中的Patient。正如@toskv在注释中所提到的,你的构造函数不是无参数的,这意味着angular会期望你可以根据注入args字符串数组中的参数OR名称的名称将参数注入其中。你没有任何东西可以匹配变量名患者注射。

像这样更改您的代码。如果您想要检索特定患者,请创建一个服务或工厂,然后将其注入您的控制器并使用角度注册该服务/工厂。

module app.form {
    export class MainController {
        public patient: Patient; // make it a field
        constructor() {
           this.patient = new Patient(/*parameters here if any*/); //new instance
        } 
    }   
}