validation
  • angular
  • angular2-forms
  • 2016-12-14 62 views 6 likes 
    6

    Angular 2's documentation讲述了表单验证。但仅限输入字段输入文本。我的问题是针对单选按钮。使用ngModel进行角度2单选按钮验证

    这里是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> 
    

    如何,如果用户没有选择任何值,禁用属性设置为true。

    回答

    6

    使用模板驱动的表单,您可以将模型暴露给局部变量并查询错误对象。

    <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; 
    } 
    
    +2

    请问您可以添加一个活塞吗?你的解决方案不适合我 –

    9

    既然你没有说形成模块(反应性或模板驱动),你用这里的活性形式的版本:

    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

    +0

    但你看他使用ngModel。 – Bazinga

    +0

    ngModel本身可用于反应式表格以及模板驱动。对于严格模板而言,死亡赠品应该是'#inputVariable =“ngModel”'或在输入的某处标记'ngControl'。相反,他发布的确切代码是可以解释的。我知道在反应形式上使用'ngModel'绑定在文档中通常是不鼓励的,但它是可用的。 – silentsod

    0

    不知道为什么其他答案试图将变量附加到无线电元素,当无线电已经成为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应该做的。

    相关问题