我正在用FormBuilder & ngFormModel構建Angular2的表單,並且無法找到驗證複選框組中的1個或多個複選框的優雅方式。我不想編寫一個自定義組件方法來驗證我使用它們的任何地方的複選框組。理想情況下,利用FormBuilder & Validator.ququired或甚至自定義驗證器來利用ngFormModel會很好。Angular2:最好的方式來使用FormBuilder Validators.required與複選框組
1
A
回答
5
您需要定義一組爲您的複選框,並指定一組驗證:
this.myForm = this.builder.group({
'checkboxes': fb.group({
checkbox1: [ '' ],
checkbox1: [ '' ]
}, {validator: this.checkboxRequired})
});
和驗證:
checkboxRequired(group: ControlGroup) {
var valid = false;
for (name in group.controls) {
var val = group.controls[name].value;
if (val) {
valid = true;
break;
}
}
if (valid) {
return null;
}
return {
checkboxRequired: true
};
}
您可以用表格這種方式鏈接此:
<form [ngFormModel]="myForm">
Checkbox1: <input type="checkbox"
[ngFormControl]="myForm.controls.checkboxes.controls.checkbox1"/>
Checkbox2: <input type="checkbox"
[ngFormControl]="myForm.controls.checkboxes.controls.checkbox2"/>
</form>
查看此問題以瞭解更多詳情:
你可以提高驗證碼借力Validators.required
:
checkboxRequired(group: ControlGroup) {
var valid = false;
for (name in group.controls) {
var check = Validators.required(group.controls[name]);
if (!check) {
valid = true;
break;
}
}
if (valid) {
return null;
}
return {
checkboxRequired: true
};
}
0
由於API已經略有改變。以下答案稍微刷新一下。這是有意的有點冗長
this.myForm = this._fb.group({
myName: ['', [<any>Validators.required, <any>Validators.minLength(5)]],
role: new FormGroup({
prog: new FormControl(null),
mgr: new FormControl(null),
designer: new FormControl(null),
}, this.CheckGroupValidation)
});
的驗證功能:
private CheckGroupValidation(group:FormGroup)
{
var valid = false;
var control_name:any;
for (control_name in group.controls)
{
var check = group.controls[control_name].value;
if (check) { valid = true; break; }
}
if (valid) { return null;}
return { CheckGroupValidation: true}; // not qualified
}
模板文件
<form [formGroup]="myForm" novalidate (ngSubmit)="save()" >
<ion-list>
<ion-item>
<ion-label>Username</ion-label>
<ion-input type="text" value="" formControlName="myName" ></ion-input>
</ion-item>
</ion-list>
<ion-list formGroupName="role">
<ion-item>
<ion-label>Programmer</ion-label>
<ion-checkbox color="dark" checked="true" formControlName="prog" ></ion-checkbox>
</ion-item>
<ion-item>
<ion-label>Manager</ion-label>
<ion-checkbox color="dark" checked="false" formControlName="mgr"></ion-checkbox>
</ion-item>
<ion-item>
<ion-label>Designer</ion-label>
<ion-checkbox color="dark" checked="false" formControlName="designer"></ion-checkbox>
</ion-item>
</ion-list>
<button type="submit"
[disabled] = "!myForm.valid"
[hidden]= "isProcessing"
ion-button full style="margin-top:0px;" >Submit</button>
</form>
相關問題
- 1. Angular2:禁用formbuilder的元素
- 2. 最好的方式來更新複選框優先
- 3. 通過formBuilder在Angular2
- 4. angular2 formbuilder多嵌套formGroupName
- 5. Angular2:在formbuilder中訂閱valuechanges
- 6. Angular2樹複選框與EventEmitter
- 7. angular2 formBuilder組導致PARAMS
- 8. 最好的方式來使用Lua
- 9. 最好的方式來使用PHP
- 10. SCSS - 最好的方式來組織
- 11. 使用複選框來控制NSTableView的選擇的最佳方式是什麼?
- 12. Flex的自定義組件,最好的方式來使用它
- 13. 使用FormBuilder
- 14. 最好的方式來獲得與視口%,頭不使用VH
- 15. Angular2 Formbuilder - 引用FormArray元素
- 16. 最好的方式來分享Cookie與API來驗證用戶
- 17. 使用formbuilder是否很好?
- 18. angular2組的複選框與所需的屬性
- 19. 使用複選框的最佳方式 - IOS swift
- 20. 飛鏢Angular2 - 使用複選框值
- 21. 創建專屬複選框組的最佳方式QML
- 22. Xcode最好的方式來重複使用多種形式的區域/視圖
- 23. Angular2 formbuilder與formArray無法驗證
- 24. Angular2 formBuilder - 兩個驗證器不工作
- 25. 組合框與複選框
- 26. 更有效的方式來使用document.getElementById複選框?
- 27. 動態的方式來使用複選框
- 28. 任何更好的方式來打印在html中選中的複選框?
- 29. 有沒有更好的方法來禁用複選框?
- 30. Angular2動態組件的最佳方式