当用户键入输入字段时,我希望除了数字之外的所有内容都替换为空字符串。不幸的是,应用程序未检测到ngModel已更改,并且仅在再次输入数字时才更新变量balanceAmount
。
是否有可能告诉Angular ngModel已更改并应更新?
HTML:
<input [ngModel]="balanceAmount" (ngModelChange)="onBalanceChange($event)" />
打字稿:
onBalanceChange(amount) {
amount = amount.replace(/[^0-9\.]+/g, '');
this.balanceAmount = amount;
}
答案 0 :(得分:2)
确保用户仅键入数字(不允许负值):
<input type="number" min="0">
像@Claies所说,最好使用内置功能,这样你不会重新发明轮子。
要检测更改,您可以使用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
内所做的控制是完全随机的,只是为了演示。