反应形式模式 IE11

reactive forms pattern IE11

我有这个表格:

   this.form = this.formbuilder.group({
      weight: [weight, [Validators.pattern('^(0|[1-9][0-9]*)$')]],
      height: [height, [Validators.pattern('^(0|[1-9][0-9]*)$')]]
    });

具有以下输入:

      <input type="number" placeholder="Indtast din højde i cm" name="height" formControlName="height" class="form-control"/>
      <div *ngIf="form.get('height').dirty && form.get('height').invalid" class="error-text">
        No Letters
      </div>

     <input type="number" placeholder="Indtast din vægt i kg" name="weight" formControlName="weight" class="form-control"/>
      <div *ngIf="form.get('weight').dirty && form.get('weight').invalid" class="error-text">
        No Letters
      </div>

这在 chrome 上可以正常工作,但是在 IE 中我可以输入数字和字符而不会收到错误消息。

谁能告诉我我可能遗漏了什么?

您的问题无效,模式从未在数字输入中起作用,现在也不起作用(刚刚在 Chrome 中使用输入 'e' 检查过)。

您需要将输入类型更改为文本或允许字母(实际上为什么不... 1e1 === 10 -- 您可以添加验证以确保输入为有效数字)

我认为模式验证实际上在 Chrome 和 IE 中都不起作用。我同意 Petr Averyanov 的回答。也可以参考this thread and this doc。在文档中,它说:

<input type="number"> elements do not support use of the pattern attribute for making entered values conform to a specific regex pattern.

您可以将输入类型更改为type="text",然后它可以在IE和Chrome中使用。

IE 11 中的结果: