修改此方法,使其应用于表单组中除最后一项之外的所有项。 Angular 7 反应形式。没有 jquery 或 ngModel
Modify this method so that it is applied to all items except the last item in a form group. Angular 7 reactive form. No jquery or ngModel
我有一种方法可以根据表单组中的项目值应用验证。此方法适用于表单组中的所有项目。我需要将表单组中的最后一项从该方法中排除,但不知道如何修改它。
在我的 TS 文件中
ngOnInit() {
this.initForm();
}
initForm() {
this.sectionSix = this.formBuilder.group({
medicaidOrSssi: [''],
snap: [''],
freeOrReducedPriceLunch: [''],
tanf: [''],
wic: [''],
noneOfTheAbove: [''],
dislocatedWorker: [''],
}, { validator: this.selectAtleastOne });
}
我要改的方法就是这个
selectAtleastOne(c: FormGroup) {
const selectAtleastOne = Object.values(c.value).some(Boolean);
return selectAtleastOne ? null : {
selectAtleastOne: {
requiredTrue: true,
valid: false,
error: true
}
};
}
表单组中的前 6 项是复选框,最后一项是下拉列表。最后一个问题不能移到另一个表格组,它需要留在这个表格组中。
问题是,至少需要 select 选中一个复选框。如果 none 是 selected,则会弹出验证消息。它现在的行为方式是,如果我没有 select 任何复选框,并且 select 下拉列表中的值(表单组中的最后一项),它认为复选框有效,即使它们都是空白。
您可以省略 c.value
中的下拉字段,然后检查布尔值。我认为这会起作用。
试试这个。
selectAtleastOne(c: FormGroup) {
const { ['dislocatedWorker']: dd, ...allCheckboxes } = c.value;
const selectAtleastOne = Object.values(allCheckboxes).some(Boolean);
return selectAtleastOne ? null : {
selectAtleastOne: {
requiredTrue: true,
valid: false,
error: true
}
};
}
我有一种方法可以根据表单组中的项目值应用验证。此方法适用于表单组中的所有项目。我需要将表单组中的最后一项从该方法中排除,但不知道如何修改它。
在我的 TS 文件中
ngOnInit() {
this.initForm();
}
initForm() {
this.sectionSix = this.formBuilder.group({
medicaidOrSssi: [''],
snap: [''],
freeOrReducedPriceLunch: [''],
tanf: [''],
wic: [''],
noneOfTheAbove: [''],
dislocatedWorker: [''],
}, { validator: this.selectAtleastOne });
}
我要改的方法就是这个
selectAtleastOne(c: FormGroup) {
const selectAtleastOne = Object.values(c.value).some(Boolean);
return selectAtleastOne ? null : {
selectAtleastOne: {
requiredTrue: true,
valid: false,
error: true
}
};
}
表单组中的前 6 项是复选框,最后一项是下拉列表。最后一个问题不能移到另一个表格组,它需要留在这个表格组中。
问题是,至少需要 select 选中一个复选框。如果 none 是 selected,则会弹出验证消息。它现在的行为方式是,如果我没有 select 任何复选框,并且 select 下拉列表中的值(表单组中的最后一项),它认为复选框有效,即使它们都是空白。
您可以省略 c.value
中的下拉字段,然后检查布尔值。我认为这会起作用。
试试这个。
selectAtleastOne(c: FormGroup) {
const { ['dislocatedWorker']: dd, ...allCheckboxes } = c.value;
const selectAtleastOne = Object.values(allCheckboxes).some(Boolean);
return selectAtleastOne ? null : {
selectAtleastOne: {
requiredTrue: true,
valid: false,
error: true
}
};
}