Angular:在ngModelChange之后执行验证

时间:2017-05-05 05:58:17

标签: angular typescript

我有一个名为fooValidator的customValidator的输入(它的作用与此无关,它只是一个自定义验证器,如果它与某些正则表达式相对应,它会验证输入):

               <form #contratForm="ngForm">
                    <input type="text"
                           class="validate"
                           [(ngModel)]="foo"
                           name="foo"
                           ngControl="foo"
                           fooValidator
                           (ngModelChange)="blah($event)"
                           required
                    />
                </form>

在我的组件中:

blah(event) {
  if(this.contratForm.controls.foo.valid){
     console.log("Valid")
  }
}

&#34;有效&#34;从未在我的控制台中显示。它发生在验证之前执行ngModelChange。我可以将blah函数包含在setTimeout和&#34;有效&#34;会出现。有没有办法在不使用hacky setTimeout的情况下这样做?

1 个答案:

答案 0 :(得分:1)

你可以使用

this.contratForm.get('foo')
    .statusChanges.forEach(
       (s) => {
           console.log(s);
       }
    );