اچتیامال - اعتبارسنجی فرم در انگولار ۲


من در حال نوشتن اعتبارسنجی فرم در Angular2 هستم. خطای من Cannot read property 'valid' of undefined است

فایل HTML من حاوی یک فرم است یعنی.

<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>

من در div [hidden]="author.valid" خطا دریافت میکنم. خطا این است: Cannot read property 'valid' of undefined"

فایل کامپوننت من شامل

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));
  }

پاسخ شماره ۱

استفاده

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

پاسخ شماره ۲

زیرا نویسنده یک متغیر نیست. استفاده کنید

<div [hidden]="contact?.controls?.author?.valid">Name is required</div>

در واقع، حتی بهتر است. شما باید از ماژول فرمهای جدید @angular/forms استفاده کنید https://scotch.io/tutorials/using-angular-2s-model-driven-forms-with-formgroup-and-formcontrol