是否存在在双向数据绑定之前触发的事件。 我有这个
<input (change)="updateANN()" [(ngModel)]="annModel.neuronsPerLayer" type="number" [formControl]="numOfNeurons" required>
我想要这样的东西
<input (beforeChange)="myFunction()" (change)="updateANN()" [(ngModel)]="annModel.neuronsPerLayer" type="number" [formControl]="numOfNeurons" required>
并在component.ts中
myFunction():boolean
{
let ind = true;
/* ... */
return ind;
}
如果myFunction
返回True
继续数据绑定,否则不要更改值。
答案 0 :(得分:0)
是。您可以使用keydown或keypress事件,它会在更改之前触发。
(keypress)="myFunction($event)"
myFunction(event) {
event.preventDefault();
}
一个工作示例:
答案 1 :(得分:0)
在更改实际发生之前有一个事件,它被称为(ngModelChanges)="someFunc()"
但在完成后,无论什么都会改变该值
答案 2 :(得分:0)
条件绑定最简单的解决方案是使用getter和setter:
<input [(ngModel)]="model['x']" required>
<强>控制器:强>
model = {
x_value: null,
get x() {
return this.x_value;
},
set x(newValue) {
this.x_value = newValue;
if (condition) {
this.x_value = default_value;
}
},
}
或者只使用 ngModelChange
<input [(ngModel)]="model.x"(ngModelChange)="onChange($event)" required>
<强>控制器:强>
onChange(newValue) {
this.model['x'] = newValue;
if (!newValue) {
this.model['x'] = default_value;
}
}