当正确的正则表达式字符串值传递给它时,PatternValidator指令不验证

时间:2019-02-08 09:51:53

标签: angular angular-directive angular-forms angular4-forms angular-template-form

我有一个输入字段,其输入应为正数。

    <input  type="number" [(ngModel)]='assetValue'
     type="number" pattern="positiveNumberRegex">

positiveNumber()返回一个RegExp。我将其字符串值存储在变量中。这是在OnInit生命周期挂钩中完成的。

this.positiveNumberRegex = this.regexPatternService.positiveNumber().source;
console.log(this.positiveNumberRegex); // ^[1-9][0-9]*[.]?[0-9]*$

但是当我输入一个正数时,验证就会失败。

如果我将正则表达式硬编码为pattern指令,则可以正常工作。

    <input  type="number" [(ngModel)]='assetValue'
     type="number" pattern="^[1-9][0-9]*[.]?[0-9]*$">

这是什么原因?

2 个答案:

答案 0 :(得分:2)

使用[]左右模式来支持绑定。

 [pattern]="positiveNumberRegex">

答案 1 :(得分:0)

[pattern]方括号告诉angular读取正数正则表达式中的内容,没有方括号则将其视为常规字符串