52

ユーザーが正しいメールアドレスを入力したことを確認するために、基本的なメール検証を追加することを検討しています。現在、以下の方法を使用すると、ユーザーが入力すると検証が更新されますが、1 文字を入力した後にエラーが発生すると奇妙に見えます。

validEmail(c: Control){
if(!c.value.match('[a-z0-9!#$%&\'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&\'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?')){
  return {
    validEmail: true
  };
}
return null;
}    

ctrlEmailAddress: Control = new Control('', Validators.compose([
Validators.required, this.validEmail]));

angularJSのように、フィールドのぼかしで検証をトリガーできるかどうか疑問に思っていました:

ng-model-options="{ updateOn: 'blur' }"

HTML 内の入力フィールドのぼかしオプションは認識していますが、コントロールをエラー状態にする方法がない限り、これによってコントロールがエラーになることはありません。

誰かが私を正しい方向に向けるのを手伝ってくれますか?

ありがとう。

編集: angularJS ソリューションではなく、angular2 ソリューションを探しています。

4

6 に答える 6

6

このようなもの: ngControlオブジェクトのtouchedプロパティを使用します。

 <div class="form-group" [class.has-error]="!name.valid && name.touched">
        <label for="name">Name</label>
        <input #name="ngForm" ngControl="name" name="name" type="text" class="form-control" required>
 </div>
于 2015-12-27T13:52:49.690 に答える
-11

してもいいです

[class.has-error]="!form.controls['ctrlEmailAddress'].valid"

これにより、モデルを変更するとすぐに has-error クラスが追加されます。したがって、基本的には、検証チェックを行うためにぼかしを行う必要はありません。

これにより、angular 2.0.0ベータの問題が解決されました;)

于 2015-11-25T15:49:35.337 に答える