2017-02-27 16 views
2

が、私はそれは、単一のテキストエリアがあり、この角度2 - フォームの検証は

import { FormControl, FormGroup, Validators } from '@angular/forms'; 
@Component({ 
    template: ` 
     <form [formGroup]="formGroup" (ngSubmit)="onSubmit()" novalidate> 
      <textarea (keyup)="valuechange($event)" #input name="detail" id="detail" formControlName="detail"></textarea> 
      <div *ngIf="formGroup.controls['detail'].dirty && formGroup.controls['detail'].invalid">This is required</div> 

      <button type="submit">Post</button> 
     </form> 
    `, 
}) 
export class CreateDiscussionComponent implements OnInit, AfterViewInit { 
    constructor(
    ) { 
     this.formGroup = new FormGroup({ 
      detail: new FormControl('', [Validators.required, Validators.minLength(2) ]), 
     }); 
    } 
    onSubmit(): void { 
     this.submitted = true; 
     console.log(this.formGroup.value) 
    } 
} 

のような形を持って失敗します。入力がempytyでない場合は、submitをクリックして送信してください

問題:フォームは、テキストエリアも空です。あなたの要素に

<button type="submit" [disabled]="!formGroup.valid" >Post</button> 

disabled属性を追加することができ

答えて

2

フォームインスタンスをonSubmit()に渡し、フォームが有効かどうかを確認できます。

HTML:

(ngSubmit)="onSubmit(formGroup)" 

は活字体:

onSubmit(form) { 
    if(form.invalid){ 
     return; 
    } 
    this.submitted = true; 
    console.log(this.formGroup.value) 
} 
2

あなたが最初にフォームを確認しているが、それはinvalidあるべきdirty&&あるformGroup.controls['detail'].dirty && formGroup.controls['detail'].invalid条件を、使用していたので、あなたのエラーメッセージが表示されません。ユーザーがフィールドに触れることなく直接フォームを送信すると、この条件は満たされません。 formGroupが有効であるとき、より良い


あなたはonSubmitメソッドを呼び出すことができます。

(ngSubmit)="formGroup.valid && onSubmit()" 
+0

私は 'disabled' attrのを試してみました、それは無効には、反応性フォームで使用すべきではないと言って、コンソールで黄色の警告を与えます。 –

+0

submit 'empty value'の後にエラーメッセージを表示する方法はありますか? –

関連する問題