最小和最大指令在Angular 6中无法正常工作

时间:2018-10-22 16:03:37

标签: angular forms frontend

问候世界各地的开发人员,

我试图深入了解如何在Angular 6中使用“ min”和“ max”指令,我知道在Angular 2版本之前不支持的功能更改,但是现在我使用的是版本6,因此它应该不会造成麻烦。

但是,我期望使用“最大”验证程序阻止用户键入超过9999的代码,而不是这种行为,我只是触发了验证程序,而不是停止用户,允许他们键入无限数。 / p>

如何通过输入数字类型来实现这种经典的“最大长度”行为?

编辑

我正在使用PrimeNG组件

<input class="ss" type="text" [formControl]="numPolizaCtrl" [(ngModel)]="conceptoForm.numPoliza" pInputText pKeyFilter="pint" placeholder="Nº póliza">

<label *ngIf="numPolizaCtrl.invalid" [ngClass] = "'error'" > Too much numbers. </label>

numPolizaCtrl = new FormControl("", [Validators.max(9999999999), Validators.min(0)]);

我想阻止用户键入超过“ x”个字符,与maxLength指令具有相同的行为,但使用类型为“ number”的输入。

谢谢大家。

2 个答案:

答案 0 :(得分:2)

您不能在maxlengthinput:number中使用min,也不能使用以下解决方案:

在您的HTML模板中

max

以及您的组件

 <input id="txtNumber" placeholder="4 character only" (keydown)="isNumberKey($event)"   
        type="text" name="txtNumber" maxlength="4">

答案 1 :(得分:2)

尝试使用正则表达式:

HTML:

<input class="ss" type="text" [formControl]="numPolizaCtrl" [(ngModel)]="conceptoForm.numPoliza" pInputText pKeyFilter="pint" placeholder="Nº póliza"(keydown)=validateNumber($event)>

结束组件:

  validateNumber(event: KeyboardEvent) {     
    let regEx =  new RegExp('^[0-9]*$');

    if(regEx.test(event.key) || event.key=="Backspace" )
         return true;
    else
         return false;
 }