我有一个整数变量绑定到输入字段。当该输入字段的保留值包含全零(例如0000)时,单击clearCounts()不会将其清除为0。 但是,如果输入中包含其他数据,例如1000,1234等,则将其清除为0。
仅当文本框包含全零时,才会出现此问题。
试图修剪左手值
set hundred(val: any) {
val = val.replace(/^0+/, '');
this.hundredBillCount = val;
this.setTotalCash();
}
然后this.hundredBillCount将保持为空,但输入文本框将填充0,无法清除。
这是HTML代码和相应的.ts代码
<input id="inputHundred" type="text" numberonly maxlength="10" placeholder={{placeholdervalue}} [(ngModel)]="hundred" class="bills-coins-input" autocomplete="off" />
set hundred(val: any) {
this.hundredBillCount = val;
this.setTotalCash();
}
get hundred(): any {
return (this.hundredBillCount > 0) ? this.hundredBillCount : 0;
}
clearCounts(){
this.hundredBillCount = 0;
}
期望:在文本框中,如果输入为0000,则在调用clearCounts()时应保持为0。即,
输入0000,输出0
实际:在文本框中,如果调用clearCounts()时输入为0000,则显示为0000。
输入0000,输出0000
注意:此文本框仅包含零。 如果我们尝试分配其他值,则效果很好。即,
clearCounts(){
this.hundredBillCount = 1;
}
已参与:输入0000,输出1
实际:输入0000,输出1
答案 0 :(得分:1)
之所以发生这种情况,是因为您使用吸气剂来访问hundredBillCount
。这是一种不寻常的方法,Angular以不同于直接绑定到变量的方式来处理ngModel的更新规则。
以这种方式尝试,您将成功。在这里使用Getter / Setter是错误的。
<input id="inputHundred" type="text" numberonly
maxlength="10" placeholder={{placeholdervalue}}
[(ngModel)]="hundredBillCount" class="bills-coins-input"
autocomplete="off"
/>