在Angular中使用Reactive Form,Form Group和Child控件时会动态加载。
父控件处于禁用状态且其中一个子节点无效的情况 - 使整个表单无效 - 即使父节点已禁用。我希望当一个控件被禁用并且它包含子控件时,所有子控件都被禁用,状态为DISABLED。因此,表单有效性将忽略已禁用的父级,并且表单将是有效的。事实并非如此。
请指教。
子控制器是否是动态加载的,并且您是否将它与Material一起使用,那么它们仍然没有修复,在提交表单时子错误不会传播到父表单时出现mat-error。
一般情况下如果您使用被动表单,您可以获取父表单并向其添加验证错误,方法是订阅表单eventChange并测试它是否存在子错误,或者通过创建ValidatorFn并将自定义验证程序添加到子控件如果发生错误,他们可以在其父表单上设置错误
示例:子控制器验证功能:
passwordVerifyTest(): ValidatorFn {
return (control: AbstractControl): ValidationErrors | null => {
const verifyPassword = control.value;
if (verifyPassword === 'error') {
control.parent.setErrors({'formInvalid': true});
return {passwordInavlid: true};
}
return null;
};
}