2017-07-10 5 views
0

フィールドが空のときにユーザーがフォームを送信しようとすると、フィールドを赤でハイライトしたいとします。だから私はshowErrorsブール値をtrueに設定して送信し、条件付きでこの値に基づいてフィールドを要求しますng-required='showErrors'角度、関数から戻る前にダイジェストサイクルが完了するまで待ちますか?

isValid関数を定義して、showErrorsの値を伝播できるようにダイジェストサイクルをトリガする関数を定義しますが、関数は私が望むように動作しません。フィールドが空の場合、サブミット・ボタンを最初にクリックすると、isValidがtrueを返し、それ以降のクリックでfalseが返されますが、フィールドが空の場合は常にfalseを返します。

isValid関数を有効にする前に、ダイジェストサイクルが伝播するのを待つようにするにはどうすればよいですか?個人的な経験から

https://plnkr.co/edit/wH6HfawquHJwR69AUPRI

+0

ダイジェストサイクルを呼び出すカスタム関数が本当に必要な場合は、わかりません。 Angularは、モデルの変更が検出されたときにダイジェストサイクルを実行します。 'showErrors = true'を設定した後のDoc" https://docs.angularjs.org/api/ng/directive/ngRequired " – Amit

+0

から、私の最初の' $ scope.myform。$ valid'の呼び出しは、入力フィールド空白です(モデルに変更がない可能性があります) – ab11

+0

この場合、コントローラーの読み込み時に "showErrors"の値をtrueに初期化するだけで、現在はfalseに設定されています。 – Amit

答えて

0

フォームレベルのCSSを使用してhightlightを制御することが容易になるだろう。私たちは、ユーザが電子メールを選択した場合、電子メール入力フィールドのrequiredにのみ必要とされ、その後、入力された電話やメールに選択することができ、たとえば、動的requiredを設定する必要がある場合

ng-requiredを使用するために予約されています。

<form ng-class='{showErrors: showErrors}'> 
    <input required /> 
</form> 

.showErrors .ng-invalid { 
    border-color: red; 
} 
関連する問題