我在使用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时,它不允许点(。)。有人帮帮我,
答案 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>