2016-07-25 20 views
3

私はangular2でフォーム検証を書いています。 私のエラーがCannot read property 'valid' of undefined角度2でのフォーム検証

私のHTMLファイルは、私がdiv [hidden]="author.valid"でエラーを取得していますすなわち

<form id="commentform" class="comment-form" novalidate 
     [ngFormModel] = "contact" (ngSubmit)="submit(contact.value)"> 
      <div class="form-input"> 
      <input type="text" id="author" name="author" placeholder="Name *" value="" 
      [ngFormControl] = "contact.controls['author']" pattern="[a-zA-Z ]*"/> 
     <div [hidden]="author.valid">Name is required 
     </div> 
      </div> 

フォームが含まれています。著者は変数ではないので エラーが私のコンポーネントファイルが

import {FormBuilder ,ControlGroup,Validators } from '@angular/common'; 
@Component({ 
    selector: 'my-contact', 
    templateUrl : 'app/contact.html' 
    } 
export class ContactComponent { 
    contact : ControlGroup; 
    constructor(private _OnChange:OnChange,private _formBuilder : FormBuilder){ 
    this.ngAfterViewInit(); 
    } 

    ngOnInit() : any{ 
     this.contact = this._formBuilder.group({ 
     'author' : ['',Validators.required] }); } 
submit(){ 
    console.log(JSON.stringify(this.contact.value)); 
    } 

答えて

0

が含まれていCannot read property 'valid' of undefined"

使用

[hidden]="contact.controls['author'].valid" 
+0

なぜですか?違いは何ですか?参考資料は? – dakab

+0

'' [hidden] = "author.valid" 'を作るために' '#author =" ngForm "'を ''に追加する必要があります。代わりに、変数 'author = new Control( ''、[Validators.required]);を作成し、これを' this._formBuilder.group({'author':this.author}) 'に追加して、ビューバインディングも同様に機能するはずです。また、新しいフォームモジュールに移行することをお勧めします。すでに交換されているものを学習する時間を投資することはできません。 –

関連する問題