2017-05-05 22 views
0

後に実行検証(何それがないことはここでは関係ありません、それはそれはいくつかの正規表現にcorreponds場合は入力を検証するだけでカスタムバリデータです)fooValidatorの名前:角度:私はのCustomValidatorで入力を持っているngModelChange

   <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") 
    } 
} 

「有効」は決して私のコンソールに表示されません。これは、検証の前にngModelChangeが実行されるときに発生します。私はsetTimeoutに私のblah関数をラップすることができ、 "Valid"が表示されます。ハッキーを使わずにそうする方法はありますかsetTimeout

+0

を使用することができますが、バリデータの非同期ですか? –

+0

入力が正規表現にマッチしているかどうかを確認するだけです。それはsetTimeoutなしで働くことになっていますか? – Scipion

+1

'valueChanges'のためにhttps://angular.io/docs/ts/latest/guide/reactive-forms.html#!#observe-controlに表示されているような' statusChanges'を購読することができます –

答えて

1

あなたは

this.contratForm.get('foo') 
    .statusChanges.forEach(
     (s) => { 
      console.log(s); 
     } 
    ); 
関連する問題