我创建了一种用于自定义验证的方法,但无法从该方法返回真实值。 这是我的方法:
requiredFileType(categoryList: CategoryModel[]) {
return function (control: FormControl) {
const file = control.value;
if (file) {
const extension = file;
for (let i = 0; i < categoryList.length; i++) {
for (let j = 0; j < categoryList[i].productModel.length; j++) {
for (let k = 0; k < categoryList[i].productModel[j].imageProduct.length; k++) {
console.log(categoryList[i].productModel[j].imageProduct[k].image_path);
if (categoryList[i].productModel[j].imageProduct[k].image_path.includes(extension)) {
console.log(categoryList[i].productModel[j].imageProduct[k].image_path);
return {
requiredFileType: null
};
}
}
}
}
return {
requiredFileType: true
};
}
return {
requiredFileType: true
};
};
}
我不了解,我没有错误,我的循环工作正常,但是需要返回true方法时返回null;
这是我的FormControl:
'image': new FormControl(image, this.requiredFileType(this.categoryList)),
答案 0 :(得分:1)
验证成功后,您应该从ValidatorFn返回null
接收控件并同步返回验证错误(如果存在)的函数,否则为 null 。
代替
return {
requiredFileType: null
};
做
return null;
答案 1 :(得分:1)
验证成功后返回对象时,例如:
return {
requiredFileType: null
};
Angular无法确定您要返回的布尔值。验证通过时,您只需返回null即可:
return null;
仅当验证失败时才需要返回对象,因为您必须指定键,例如:
return{
requiredFileType: true
};
然后可以在错误收集中使用requiredFileType键。