Angular 在角度2中的按键上验证输入字段

Angular 在角度2中的按键上验证输入字段,angular,Angular,我想知道如何在每次按键时验证输入字段。如果输入字段中的文本被某些验证函数认为无效,我想取消按键或只是恢复原始值。这样,输入字段应始终包含有效值 因此,输入字段如下所示: <input [ngModel]="textValue" (ngModelChange)="onModelChange($event)" /> <input [value]="textValue" (input)="onInput($event)" /> 在尝试了大量数据绑定和处理按键事件的组合后,

我想知道如何在每次按键时验证输入字段。如果输入字段中的文本被某些验证函数认为无效,我想取消按键或只是恢复原始值。这样,输入字段应始终包含有效值

因此,输入字段如下所示:

<input [ngModel]="textValue" (ngModelChange)="onModelChange($event)" />
 <input [value]="textValue" (input)="onInput($event)" />
在尝试了大量数据绑定和处理按键事件的组合后,我决定请教专家。提前谢谢

编辑: 我自己找到了解决办法。我没有处理ngModelChange,而是订阅了输入事件,并使用event.target.value在每个按键上获取/设置适当的值。我的输入字段现在如下所示:

<input [ngModel]="textValue" (ngModelChange)="onModelChange($event)" />
 <input [value]="textValue" (input)="onInput($event)" />

我希望这能帮助所有面临同样问题的人

您的解决方案还可以,但我也找到了替代方案

<input ... (keypress)="validateKey($event)" >
validateKey(event) {
  let oldval = event.target.value;
  let val = oldval.slice(0,event.target.selectionStart) + event.key + oldval.slice(event.target.selectionEnd);

  // here you have access to input oldval and (current) val

  if(val .... ) return true // allow to push charater
  return false              // not allow to push character
}