Primeng KeyFilter运行不正常

时间:2018-01-25 11:50:07

标签: regex angular typescript primeng keyfilter

我在使用KeyFilter模块这里是我的代码:

<input type="text" pInputText [(ngModel)]="price.TintCost" [pKeyFilter]="patternDecimal" name="tintCost" required="true" />

这是我的typescrip代码:

patternDecimal: RegExp = /^[0-9]+(\.[0-9]{1,2})?$/;

这里是primeng的版本:|

"primeng": "^5.2.0-rc.1",

我在正则表达式中测试然后我可以键入点(。)但是当我应用于KeyFilter时,它不允许点(。)。有人帮帮我,

2 个答案:

答案 0 :(得分:1)

我通过添加掩码作为默认值来解决这个问题

KeyFilter.DEFAULT_MASKS['currencyRegex'] =  /^-?(?:0|[1-9]\d{0,2}(?:,?\d{3})*)(?:\.\d+)?$/;

答案 1 :(得分:0)

我通过将 pValidateOnly 属性更改为true解决了此问题。 问题是KeyFilter会检查键盘上的任何按键,如果完整值不正确,则不允许复制,即使您复制并粘贴该值也是如此。 在文档中说

替代验证模式,而不是阻止单个按键 通过pValidateOnly属性启用的属性可验证整个输入 带有内置的Angular验证器。 https://www.primefaces.org/primeng-6.1.6/#/keyfilter

对我有用的例子。

Component.ts

public twoDecimal: RegExp = /^\s*-?(\d+(\.\d{1,2})?|\.\d{1,2})\s*$/

Component.html

<input name="decimalField"
        #decimalField="ngModel"
        [pKeyFilter]="twoDecimal" 
        [pValidateOnly]="true" 
        [(ngModel)]="item.decimalField" 
        type="text" pInputText>

<div  *ngIf="!decimalField.valid" class="alert alert-danger">
    <p>Incorrect format.</p>
</div>