2016-11-06 5 views
1

バックエンドにフォームを送信するときに、検証に失敗したことを示すHTTPコード400の応答が表示されることがあります。角2:フォームにリモート検証エラーを適用する

私のバックエンドは、たとえばで応答:

{ 
 
    "status":"fail", 
 
    "data":{ 
 
    "email":[ 
 
     "Email address already in use" 
 
    ] 
 
    } 
 
}

私は電子メールのフィールドを無効にし、応答に基づいて、エラーメッセージを、設定したいと思います。

私が試したことはこれです:これは、部分的に動作しているよう

if (err && err.status === 400) { 
 
    const response = err.json(); 
 
    Object.keys(response.data).forEach(key => { 
 
     const messages = response.data[key]; 
 
     this.registerForm.get(key).setErrors({ 
 
      remote: messages[0] // Set just the first message 
 
     }, true); 
 
    }); 
 
}

、問題は、私はクリックしてフォーカス制御をしない限り、私のコントロールが無効な状態を取得しないことです入力。

何か間違っているのですか、それともバグですか?私のすべてのグーグルは私が正しくそれをやっていることを確認しているようです。

あなたは、フォーム入力のカスタム検証を実行し、約束を解決する上で更新するために、形成するために、約束を返すことによって、非同期検証を行うことができます反応型のスタイルを、適応登録フォームを再実装することができます

答えて

0

APPR任意の入力。 反応形式検証の実装について、Angular 2のドキュメントをチェックインすることができます。Reactive Form Validation - Angular 2