数字入力を0〜100の範囲に制限したいが、入力時には検証中ではない。値が変更されなかった場合、ngModelを強制的に更新する方法はありますか?
<input [ngModel]="value" (ngModelChange)="validate($event)" />
そして値が与えられた制限を超えているかどうかを確認:
public validate(value) {
if (value > 100)
this.value = 100;
if (value < 0)
this.value = 0;
}
そしてこのpartialy作品を私は値とemitt変更イベントをバインドするngModelを使用しています。しかし、150を入力しようとすると値が100に切り替わると、モデル値が100のままであるため、100以上の値を入力できるため、入力値は更新されません。手動でこの更新プログラムを強制実行する方法はありますか?
編集:私はここでかなり重要なビットを欠場しました。この動作は、type = numberの入力に対してのみ発生するようです。
public keyPress(event) {
let inputChar: number = +String.fromCharCode(event.charCode);
if (this.value + inputChar > 100 || this.value + inputChar < 0) {
// Exceeded limits, prevent input
event.preventDefault();
}
}
ソリューションはあなたのために機能しましたか? – Faisal
これは入力タイプ番号では機能しませんが、モデル値+入力文字が100を超える場合は、キーを押してチェックすると、私が持っていたものにパッチを当てているようです。本当に清潔なソリューションではありませんが、機能します。ありがとう。 –