如果我的输入仅包含零,例如0000,则不会用单个0

时间:2019-01-29 11:49:05

标签: html typescript

我有一个整数变量绑定到输入字段。当该输入字段的保留值包含全零(例如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

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"  
/>