首页 文章

NgModel用空字符串替换已更改的字符时未注意到更改

提问于
浏览
2

当用户键入输入字段时,我希望除了数字之外的所有内容都替换为空字符串 . 不幸的是,应用程序未检测到ngModel已更改,并且仅在再次输入数字时才更新变量 balanceAmount . 是否有可能告诉Angular ngModel已更改并应更新?

HTML:

<input [ngModel]="balanceAmount" (ngModelChange)="onBalanceChange($event)" />

打字稿:

onBalanceChange(amount) {
    amount = amount.replace(/[^0-9\.]+/g, '');
    this.balanceAmount = amount;
}

1 回答

  • 2

    要确保用户只键入数字(不允许负值):

    <input type="number" min="0">
    

    就像@Claies所说,最好使用内置功能让你 don't reinvent the wheel .

    要检测更改,可以使用DoCheck() . 例:

    export class myClass implements OnInit, DoCheck {
        private myModel: any;
    
        constructor() {
        }
    
        ngOnInit() {
        }
    
        ngDoCheck() {
            // Do whatever checks and controls on your model
            console.log('The listener listens to: ' + JSON.stringify(this.myModel));
            if (this.myModel.length > 0 || !this.myModel) {
                // Do something
            }
        }
    }
    

    顺便说一句,我在 if 内做的控制是完全随机的,只是为了演示 .

相关问题