私は少し明確に探しています。ここなぜ関数型パラメータの型定義は変換を実行しません
toggleWorker(stsID: number): void {
// get status object by selected staus ID
let cStatus: Status = this.stsList.filter((s: Status) => s.StatusID === stsID)[0];
// if status requires a worker to be assigned then toggle requireWorker
if (cStatus.RequireWorker) {
this.requireWorker = true;
} else if (!cStatus.RequireWorker) {
this.requireWorker = false;
}
}
は、HTMLの宣言です:
<div class="large-3 columns">
<label >Trade Status
<select id="StatusID"
[(ngModel)]="currentTrade.StatusID"
[ngFormControl]="shiftForm.controls['StatusID']"
(change)="toggleWorker($event.target.value)" >
<option *ngFor="#sts of stsList" value="{{sts.StatusID}}"
>{{sts.Title}}</option>
</select>
</label>
</div>
私はtypescriptです(私は1.7を使用しています)選択オプション/ htmlの中にドロップダウンの変更イベントに結び付けられている機能を持っています
export class Status {
StatusID: number;
PortalID: number;
Title: string;
Code: string;
RequireWorker: boolean;
constructor(obj?: any) {
this.StatusID = obj && obj.StatusID || 0;
this.PortalID = obj && obj.PortalID || 0;
this.Title = obj && obj.Title || null;
this.Code = obj && obj.Code || null;
this.RequireWorker = obj && obj.RequireWorker || false;
}
}
I:ここにあなたがStatusIDは、タイプ番号があることを確認できるように、ステータスオブジェクトのクラスがありますsample fiddleがあります。これは完全に動作します。
しかし、これを私のangular2アプリケーションで使用しようとしたとき、関数のパラメータの型を明示的に変換しない限り、機能しませんでした。
let cStatus: Status = this.stsList.filter((s: Status) => s.StatusID === Number(stsID))[0];
お知らせ番号(stsID)
質問の追加: 誰かが私がここで何が起こっているか理解するのを助けることができる、以下の変更を参照してください。関数型パラメータの型宣言は内部型チェックのためだけで、その型への変換を行うと仮定しました。
私はそれが理にかなっていると思います。
おかげ
このような状況でタイプ変換のベストプラクティスは何ですか?すべてのパラメータの関数の最初のステップとして関数のパラメータを変換しようとしていますか? –
私はhttp://stackoverflow.com/questions/31879497/angular2-radio-button-bindingや変換を行うゲッタ/セッタに示すようにカスタムのControlValueAccessorを作成すると思います。 –