Ionic中的Angular 2反应形式复选框验证

问题描述:

我正在使用Angular Forms制作带有电子邮件,密码和复选框的条款&我的Ionic应用程序中的条件。 我的HTML:Ionic中的Angular 2反应形式复选框验证

<form [formGroup]="registerForm" (ngSubmit)="register()" class="center"> 
    <ion-item class="input-field"> 
    <ion-input type="email" formControlName="email" placeholder="Email"></ion-input> 
    </ion-item> 
    <ion-item class="input-field"> 
    <ion-input type="password" formControlName="password" placeholder="Password" ></ion-input> 
    </ion-item> 
    <ion-item no-lines> 
    <ion-checkbox formControllName="termsAndConditions"></ion-checkbox> 
    <ion-label>Terms and Conditions</ion-label> 
    </ion-item> 
    <button ion-button full type="submit" [disabled]="!registerForm.valid">Register</button> 
</form> 

和一个简单的角度分量:

export class RegisterComponent { 
    registerForm: FormGroup; 
    email = new FormControl('', [Validators.required, Validators.email]); 
    password = new FormControl('', [Validators.required]); 
    termsAndConditions = new FormControl('', [Validators.required]); 

    constructor(private formBuilder: FormBuilder) { 
    this.registerForm = this.formBuilder.group({ 
     email: this.email, 
     password: this.password, 
     termsAndConditions: this.termsAndConditions 
    }); 
    } 
} 

我有一个复选框,确认一个问题,因为我认为它应该不工作。现在我可以在没有复选框的情况下提交表单。我只需要使其成为必需 - 与已经工作的其他表单值相同,我该怎么做?

我管理使用上的复选框自定义验证解决问题的手段:

export class RegisterComponent { 

    registerForm: FormGroup; 
    email = new FormControl('', [Validators.required]); 
    password = new FormControl('', [Validators.required]); 
    termsAndConditions = new FormControl(undefined, [Validators.required]); 

    constructor(private formBuilder: FormBuilder) { 
    this.registerForm = this.formBuilder.group({ 
     'email': this.email, 
     'password': this.password, 
     'termsAndConditions': this.termsAndConditions 
    }, {validator: this.checkCheckbox }); 
    } 
    public checkCheckbox(c: AbstractControl){ 
    if(c.get('termsAndConditions').value == false){ 
    return false; 
    }else return true; 
} 
} 

现在复选框正常工作。

我也遇到了你写的问题。

private policyButtonValue: boolean; 
在html

::

<input type="checkbox" [(ngModel)]="policyButtonValue"> 

如果单独的绑定布尔变量是我建议在控制接收表单请求在`寄存器()

后写一些定制的解决方法的逻辑仍然没有检查,你可以自己实现错误处理。

private register(values: RegisterCredentials) { 
     if(!policyButtonValue){ 
       ... error stuff here 
     } 
     if (this.form.valid) { 
      ... 
     } 
}