Angular 2 使用 ngModel 验证单选按钮
Angular 2 Radio Button Validation with ngModel
Angular 2's documentation 讲述表单验证。但仅适用于输入字段类型的文本。我的问题是单选按钮。
这里是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>
如果用户未选择任何值,如何将禁用 属性 设置为真。
使用模板驱动的表单,您可以将模型暴露给局部变量并查询错误对象。
<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;
}
由于您没有说明您使用的是哪个表单模块(反应式或模板驱动),这里是反应式表单版本:
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>
组件代码
radioTest: FormGroup;
gender;
constructor(fb: FormBuilder) {
this.name = 'Angular2'
this.radioTest = fb.group({
gender: ['', Validators.required]
});
}
这是一个 Plunker:http://plnkr.co/edit/mWhYtc2nf8hSHFbLWlEx?p=preview
不确定为什么其他答案试图将变量附加到无线电元素,当无线电已经成为 ngForm
的一部分时,因此做 myForm.valid
会起作用。
这是我的:
<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>
只需 f.valid
即可。
使用 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>
Angular 2's documentation 讲述表单验证。但仅适用于输入字段类型的文本。我的问题是单选按钮。
这里是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>
如果用户未选择任何值,如何将禁用 属性 设置为真。
使用模板驱动的表单,您可以将模型暴露给局部变量并查询错误对象。
<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;
}
由于您没有说明您使用的是哪个表单模块(反应式或模板驱动),这里是反应式表单版本:
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>
组件代码
radioTest: FormGroup;
gender;
constructor(fb: FormBuilder) {
this.name = 'Angular2'
this.radioTest = fb.group({
gender: ['', Validators.required]
});
}
这是一个 Plunker:http://plnkr.co/edit/mWhYtc2nf8hSHFbLWlEx?p=preview
不确定为什么其他答案试图将变量附加到无线电元素,当无线电已经成为 ngForm
的一部分时,因此做 myForm.valid
会起作用。
这是我的:
<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>
只需 f.valid
即可。
使用 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>