Angular 5模式验证不适用于动态反应形式

时间:2018-11-12 22:03:10

标签: angular typescript

我正在尝试使用正则表达式模式##.##.##.##的角度反应形式实现现场验证。对于某些模式,它不起作用。我尝试了以下输入12.25.36.25,但验证失败,并使用了regextester测试了模式(^\d{2}.\d{2}.\d{2}.\d{2}$),效果很好。我不确定这里出了什么问题。非常感谢您的帮助。

这里是StackBlitz

1 个答案:

答案 0 :(得分:1)

原因是您忘记在class question-base中添加名为pattern的字段。 这是代码:

export class QuestionBase<T> {
  ...
  pattern: string;

  constructor(options: {
      ...
      pattern?: string
    } = {}) {
    ...
    this.pattern = options.pattern || null
  }
}

另一个问题是##。##。##。##不是有效数字。您需要将该输入更改为text类型。最后,如果您的模式是正则表达式,则需要使用javascript的正则表达式类型而不是字符串。将您的模式替换为/^\d{2}.\d{2}.\d{2}.\d{2}$/

编辑:模型的最终形式应为:

new TextboxQuestion({
        key: 'version',
        label: 'Release Number',
        type: 'text',
        required: true,
        order: 4,
        pattern: /^\d{2}.\d{2}.\d{2}.\d{2}$/ // needed format: ##.##.##.##
 })