Angular 2 - 带模式问题的NgForm

时间:2016-05-10 09:21:30

标签: angular angular2-forms

大家好!模式本身有效。我从http://regexlib.com/RETester.aspx?regexp_id=409中提取并使用https://regex101.com/对数据进行了测试:02/02/2012以及其他许多数据。

也许我没有正确使用它?

<form class="searchBlock" [ngFormModel]="formSearch">
   <input type="text" ngControl="frmDateFrom">
</form>
<span>{{formSearch.valid | json}}</span>


import {FORM_DIRECTIVES, FormBuilder, Control, ControlGroup, Validators} from 'angular2/common';
export class MyComponent {
  formSearch: ControlGroup;
  frmDateFrom: Control;
  constructor(private builder: FormBuilder) {
        this.frmDateFrom = new Control('', Validators.compose([Validators.required, Validators.pattern("^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((1[6-9]|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((1[6-9]|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((1[6-9]|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$")]));
        this.formSearch = builder.group({
        frmDateFrom: this.frmDateFrom
    });
  }
}

无论值是什么,formSearch.valid总是会显示false。可能有什么不对?

1 个答案:

答案 0 :(得分:2)

如果你使用像"^[a-z]$"这样的简单正则表达式,它工作正常,因此我认为它必须是导致问题的正则表达式。

Plunker example

我很确定问题是由需要转义的反斜杠引起的。只需将\更改为\\

即可