angularjs - Angular Typescript コントローラーコンストラクターが呼び出されない
私はTypeScriptでAngularを使用しています。
私は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
) {
}
}
}
私のコントローラーコードは、TypeScriptを使うとこのようになります
module app.form {
export class MainController {
constructor(public patient: Patient) {
}
}
}
私のアプリのファイルはこのようになっています。
module app.form {
angular
.module("formApp", [
"ngMaterial",
"ngMdIcons",
"ngMessages"
])
.controller("MainController", MainController);
}
私はこの順序でhtmlファイルにすべてのスクリプトを登録しています
<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>
アプリケーションを実行すると、このエラーが表示されます
私がどこで間違っているのですか?
回答 #1
エラーを解決するには、TypeScriptを使用する際にコントローラーで静的な $inject を使用する必要があります
static $inject = [];
回答 #2
通常、データを注入するのではなく、サービスから取得します。ここでデータと言うのは、あなたのメインコントローラー内の Patient を指します。コメントで @toskv が述べているように、あなたのコンストラクターはパラメータなしではないため、Angular はパラメータ名または注入引数の文字列配列内の名前に基づいて、それにパラメータを注入できることを期待しています。注入される患者 (patient) という変数名に一致するものは何もありません。
コードをこのように変更してください。特定の患者を取得したい場合は、それを行うサービスまたはファクトリーを作成し、それをコントローラーに注入し、そのサービス/ファクトリーを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
}
}
}
