Angular 2:尝试使用控制器内的onModelChange更新ngModel

时间:2017-08-18 12:13:20

标签: javascript html angular angular-ngmodel

我正在尝试更新ngModel

中的onModelChange

我知道我们可以这样做:

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

但这不是我想要的。我需要在更新myValue

之前进行一些验证

这是我的代码:

<input mdInput type="number" 
       [ngModel]="tax.refundAmount" 
       (ngModelChange)="onChange($event, tax.paidAmount)" />

在控制器中:

onChange($event, maxValue) {
    if ($event > maxValue) {
        $event = maxValue;
    }
}

但是ngModel没有更新:(

如何更新控制器内的模型? 此处显示的输入位于ngFor循环内,因此无法直接访问模型

修改

我尝试使用[(ngModel)](change),但在向父控制器发出事件时存在时间问题

更新1

我想在更新模型之后在组件类中做一些事情,比如发出事件或计算值。因此,我无法返回值,然后在模板中更新模型。

1 个答案:

答案 0 :(得分:2)

试试这个?

<input mdInput type="number" 
               [ngModel]="tax.refundAmount" 
               (ngModelChange)="tax.refundAmount = onChange($event, tax.paidAmount, tax.refundAmount)" />

你的控制器:

onChange($event, maxValue, refundAmount) {
    return $event > maxValue ? maxValue : refundAmount;
}