简体   繁体   English

使用ngModel进行Angular 2单选按钮验证

[英]Angular 2 Radio Button Validation with ngModel

Angular 2's documentation tells about the form validation. Angular 2的文档讲述了表单验证。 But only for input fields type text. 但仅适用于输入字段类型文本。 My question is for Radio Buttons. 我的问题是收音机按钮。

Here is HTML: 这是HTML:

<input type="radio" required name='gender' value='Male' [(ngModel)]='gender'>Male
<input type="radio" required name='gender' value='Female' [(ngModel)]='gender'>Female
<button type='button' [disabled]="??">Next<button>

How to set disabled property to true if user hasn't selected any value. 如果用户未选择任何值,如何将disabled属性设置为true。

With template driven forms you can expose your model to a local variable and query the errors object. 使用模板驱动表单,您可以将模型公开给局部变量并查询errors对象。

<form #f="ngForm">
   <input type="radio" value="male" name="gender" [(ngModel)]="gender" required #genderControl="ngModel"> Male
   <input type="radio" value="female" name="gender" [(ngModel)]="gender" required> Female
   <button [disabled]="genderControl.errors">Next</button>
</form>


export class App {
  gender = null; 
}

Since you didn't say which Forms Module (Reactive or Template driven) you were using here's a reactive forms version: 既然您没有说出您使用的是哪种表格模块(反应式或模板驱动),那么这是一个反应式表格版本:

html HTML

<form [formGroup]="radioTest">
  <input type="radio" name="gender" value='Male' formControlName="gender" [(ngModel)]='gender'>Male
  <input type="radio" name='gender' value='Female' formControlName="gender" [(ngModel)]='gender'>Female
  <button type="button" [disabled]="radioTest.controls['gender'].invalid">Gender Button</button>
</form>

component code 组件代码

radioTest: FormGroup;
gender;
constructor(fb: FormBuilder) {
  this.name = 'Angular2'
  this.radioTest = fb.group({
    gender: ['', Validators.required]
  });
}

Here's a Plunker: http://plnkr.co/edit/mWhYtc2nf8hSHFbLWlEx?p=preview 这是一个Plunker: http ://plnkr.co/edit/mWhYtc2nf8hSHFbLWlEx?p = preview

Not sure why the other answers are trying to attach variables to the radio elements, when the radios already become part of the ngForm therefore doing a myForm.valid would work. 不知道为什么其他答案试图将变量附加到无线电元素,当无线电已经成为ngForm一部分时,因此执行myForm.valid会起作用。

Here's mine: 这是我的:

<form #f="ngForm">
  <input type="radio" value="male" name="gender" [(ngModel)]="gender" required> Male
  <input type="radio" value="female" name="gender" [(ngModel)]="gender" required> Female
  <button [disabled]="f.valid">Next</button>
</form>

Just a f.valid should do. 只是一个f.valid应该做。

Validate mat-radio-group using Angular2 使用Angular2验证mat-radio-group

<form [formGroup]="answerTypeFormGroup">
    <ng-template matStepLabel>first name</ng-template>
        <mat-radio-group formControlName="answerTypeCtrl" required>
        <mat-radio-button value="option_1">Option 1</mat-radio-button>
        <mat-radio-button value="option_2">Option 2</mat-radio-button>
        <mat-radio-button value="option_3">Option 3</mat-radio-button>
    </mat-radio-group>
</form>
// if answerTypeFormGroup is not valid show some error
<div *ngIf="!answerTypeFormGroup.valid" >some error</div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM