在Angular 4 Reactive Forms中提交验证消息

时间:2017-06-27 07:07:49

标签: angular forms typescript angular-reactive-forms

我正在使用Angular 4,Reactive表单。我想在用户点击“提交/创建帐户”按钮时显示验证错误消息。 这是我正在使用的HTML和打字稿代码。

<form [formGroup]="signupForm" (ngSubmit)="onSubmit()">

  <div class="form-group">
    <input type="text" 
           id="firstname" 
           name="firstname" 
           formControlName="firstname" 
           placeholder="First Name">
    <span *ngIf="!signupForm.get('firstname').valid && signupForm.get('firstname').touched" 
           class="help-block"> Please Enter First Name (Minimum 2 Characters)</span>
  </div>

  <div class="form-group">
    <input type="text" 
           id="lastname" 
           name="lastname" 
           formControlName="lastname" 
           placeholder="Last Name">
    <span *ngIf="!signupForm.get('lastname').valid && signupForm.get('lastname').touched" 
           class="help-block"> Please Enter Last Name (Minimum 2 Characters)</span>
  </div>

  <div class="form-group">
    <button type="submit" 
            class="btn btn-success btn-lg btn-qte">Create Account</button>
  </div>

</form>

TYPE SCRIPT CODE

export class UserRegistrationComponent implements OnInit {
    signupForm: FormGroup;

    ngOnInit() {
        this.signupForm = new FormGroup({
            'firstname': new FormControl(null, [Validators.required, Validators.minLength(2)]),
            'lastname': new FormControl(null, [Validators.required, Validators.minLength(2),]),
            'businessname': new FormControl(null),
            'phonenumber': new FormControl(null, [Validators.required]),
            'email': new FormControl(null, [Validators.required, Validators.email]),
            'password': new FormControl(null, [Validators.required]),
            'confirmpassword': new FormControl(null, Validators.required)

        });
    }

    onSubmit() {
        console.log(this.signupForm)
    }

}

3 个答案:

答案 0 :(得分:10)

这样的东西
onSubmit() {
    console.log(this.signupForm)
    this.signupForm.controls['firstname'].markAsTouched()
}

答案 1 :(得分:2)

您可以使用markAllAsTouched()方法执行此操作。 它将所有表单控件标记为已触摸,并在需要时触发验证错误

onSubmit() {
    this.signupForm.markAllAsTouched();
}

答案 2 :(得分:1)

要通过touched获取表单控件的dirtyvalidformGroup等属性,请使用:

signupForm.controls.firstname.touched。同样地,您可以获得有效和无效等其他属性。

如果您已创建FormControl的单个对象,则可以在不使用firstname.touched的情况下将该对象属性作为formGroup进行访问。

有关模型驱动表单中验证的更多信息,请参阅此处的Model Driven Form Validations