在Angular中使用Reactive Form,Form Group时, 和动态加载子控件。
父控件已禁用且其中一个孩子无效的情况 - 使整个表单无效 - 即使父级已禁用。 我希望当一个控件被禁用并且它包含子控件时 所有子控件都被禁用,状态为DISABLED。 因此,表单有效性将忽略已禁用的父级,并且表单将是有效的。 事实并非如此。
请告知。
答案 0 :(得分:1)
子控制器是否是动态加载的,并且您是否将它与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;
};
}