Angular 7的ControlValueAccessor不会传播给父表单的有效状态。
创始人
2024-10-17 00:30:23
0

问题描述: 在Angular 7中,当使用ControlValueAccessor来自定义表单控件时,该控件的有效状态不会传播给父表单。

解决方法: 要解决这个问题,我们需要手动更新父表单的有效状态。以下是一种解决方法:

  1. 在自定义表单控件的代码中,创建一个私有的属性,用于保存父表单控件的引用。
private _control: NgControl;

// 在构造函数中注入NgControl
constructor(private control: NgControl) {
  this._control = control;
}
  1. 创建一个私有的方法,用于更新父表单的有效状态。这个方法将会调用父表单控件的updateValueAndValidity()方法。
private updateParentValidity(): void {
  if (this._control && this._control.control) {
    this._control.control.updateValueAndValidity();
  }
}
  1. 在自定义表单控件的value属性的setter方法中,调用updateParentValidity()方法。
set value(val: any) {
  this.innerValue = val;
  this.onChange(val);
  this.onTouched();

  // 更新父表单的有效状态
  this.updateParentValidity();
}

通过这种方式,当自定义表单控件的有效状态改变时,将会手动更新父表单的有效状态。

请注意,以上代码示例是基于Angular 7的版本,如果你使用的是其他版本,可能会有一些差异。但是基本的思路是相同的,即手动更新父表单的有效状态。

相关内容

热门资讯

一分钟揭秘!wepoker私人... 一分钟揭秘!wepoker私人局外卦,wepoker安装教程,安装教程(有挂教程);支持2-10人实...
记者发布!wepoker线上大... 记者发布!wepoker线上大神,wpk俱乐部辅助器,第三方教程(有挂辅助);科技安装教程;1367...
一分钟揭秘!wejoker辅助... 一分钟揭秘!wejoker辅助软件价格,wejoker辅助机器人,解密教程(有挂辅助);建议优先通过...
技术分享!wepoker辅助器... 自定义wepoker辅助器最新版本更新内容系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微...
推荐几款新版!德州私人局脚本,... 推荐几款新版!德州私人局脚本,wepoker怎么设置盖牌,2025版教程(有挂攻略);科技安装教程;...
总算明白!德州辅助工具到底怎么... 这是一款非常优秀的wepoker私人局辅助器怎么用 ia辅助检测软件,能够让你了解到wepoker私...
六分钟了解!大菠萝免费辅助,w... 六分钟了解!大菠萝免费辅助,wepoker透视器免费,介绍教程(有挂神器);1分钟了解详细教程(微信...
今日百科!hhpoker到底可... 今日百科!hhpoker到底可以作弊吗,impoker辅助,详细教程(有挂攻略);大神普及一款德州a...
一分钟快速了解!xpoker辅... 一分钟快速了解!xpoker辅助怎么用,wepoker钻石怎么看底牌,详细教程(有挂技巧)准备好在w...
一分钟揭秘!wepoker数据... 一分钟揭秘!wepoker数据分析,德普之星透视辅助软件激活码,细节方法(有挂技巧);德普之星透视辅...