angularjs - Konstruktor Controller Angular Typescript tidak dipanggil


Saya menggunakan Angular dengan TypeScript.

Saya memiliki kelas model dalam TypeScript

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
        ) {

        }
    }
}

Kode Controller saya menggunakan TypeScript seperti ini

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

        } 
    }   
}

File aplikasi saya terlihat seperti ini.

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

Saya mendaftarkan semua skrip di file html dengan urutan ini

<script src="Scripts/angular.min.js"></script>
    <script src="Scripts/angular-resource.min.js"></script>
    <script src="Scripts/angular-animate/angular-animate.min.js"></script>
    <script src="Scripts/angular-aria/angular-aria.min.js"></script>
    <script src="Scripts/angular-messages.min.js"></script>
    <script src="Scripts/angular-material/angular-material.min.js"></script>
    <script src="Scripts/angular-material-icons/angular-material-icons.min.js"></script>

    <script src="app/model.js"></script>
    <script src="app/controllers/main-controller.js"></script>
    <script src="app/app.js"></script>

Saat saya menjalankan aplikasi saya, saya melihat kesalahan ini

Di mana saya salah?

Jawaban #1

Untuk menyelesaikan kesalahan, seseorang harus menggunakan static $inject di controller saat menggunakan TypeScript

static $inject = [];

Jawaban #2

Biasanya Anda tidak menyuntikkan data tetapi mengambilnya dari layanan. Dengan data saya maksud Patient dalam pengontrol utama Anda. Seperti yang disebutkan oleh @toskv dalam komentar, konstruktor Anda tidak tanpa parameter yang berarti Angular akan mengharapkan bahwa Anda dapat menyuntikkan parameter ke dalamnya berdasarkan nama parameter ATAU nama dalam array string argumen injeksi. Anda tidak memiliki apa pun yang sesuai dengan nama variabel patient untuk disuntikkan.

Ubah kode Anda seperti ini. Jika Anda ingin mengambil pasien tertentu, buatlah sebuah Service atau Factory untuk melakukannya dan sisipkan ke dalam controller Anda serta daftarkan Service/Factory tersebut dengan Angular.

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

Artikel terkait