Wal*_*bär 8 javascript typescript angular
我想使用 Angular 的接口实现自定义跨字段验证器ValidatorFn
。
这是我的代码:(我按照https://angular.io/guide/form-validation#cross-field-validation上提供的步骤进行操作)
import { ValidatorFn, ValidationErrors, FormGroup } from "@angular/forms";
/**
* This validator implements the ValidatorFn Interface from Angular.
*
* @param formGroup- the FormGroup that needs Validation
*
* @returns null if the form is valid, else some {@link ValidatorErrors}
*/
export const CompleteBloodpressureValidator: ValidatorFn = (formGroup: FormGroup) => {
const bloodpressureSys = formGroup.get("bloodPressureSysFormControl");
const bloodpressureDia = formGroup.get("bloodPressureDiaFormControl");
if (bloodpressureSys != null && bloodpressureDia == null || bloodpressureSys == null && bloodpressureDia != null){
// return some custom ValidatorErrors
return {
bloodPressureIncomplete: true
};
}
// if everything is fine, return null
return null;
}
Run Code Online (Sandbox Code Playgroud)
但角度编译器不断告诉我以下内容:
Type '(fromGroup: FormGroup) => { bloodPressureIncomplete: boolean; } | null' is not assignable to type 'ValidatorFn'.
Types of parameters 'fromGroup' and 'control' are incompatible.
Type 'AbstractControl' is missing the following properties from type 'FormGroup': controls, registerControl, addControl, removeControl, and 3 more.ts(2322)
Run Code Online (Sandbox Code Playgroud)
在我看来这没有任何意义,我的实现ValidatorFn
正是它应该的样子。
有什么建议我在这里做错了什么吗?
Wal*_*bär 12
So the answer to this question is to update the TypeScript version or exchange
formGroup: FormGroup
Run Code Online (Sandbox Code Playgroud)
with
formGroup: AbstractControl
Run Code Online (Sandbox Code Playgroud)
It seems to be caused by a bug in the TypeScript version.
编辑:更新到最新的 TypeScript 版本不会改变任何内容。我想这可能是 Angular 文档中的一个错误。
归档时间: |
|
查看次数: |
3816 次 |
最近记录: |