我创建了CustomInputComponent和CustomElementErrorsComponent。
这两个组件都使用OnPush策略。
CustomInput包含标准输入标签和CustomElementErrors。
CustomElementErrors显示表单控件错误。
我在CustomInput内部传递FormGroup和FormControl名称。
(根据设计,我不将formControl作为@Input传递)
(而且我没有实现ControlValueAccessor)
我在CustomInput中实现ngDoCheck以调用markForCheck并在CustomElementErrors中更新视图。
但是,当我单击markAsTouched按钮时,除了最后输入中的错误组件之外,所有的Errors组件都会将“ touched”从false更改为true。
我不明白为什么。选择标记和其他表单元素的情况相同。
我找到了两种解决方案:
control.updateValueAndValidity()
。对于新人来说不是很明显。
谢谢。