validation
  • angular
  • angular2-forms
  • 2016-12-14 113 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應該做的。

    相關問題