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

时间:2017-05-11 10:17:28

标签: angular angular-ngmodel

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

HTML:

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

打字稿:

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

1 个答案:

答案 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内所做的控制是完全随机的,只是为了演示。