在Angular中动态使用SetValidator后,如何不丢失初始化的验证器?
我有一个父组件,在其中创建FormControl数组并使用Validations.required Validator初始化它在Angular中动态使用SetValidator后,如何不丢失初始化的验证器?,angular,dynamic,angular-reactive-forms,customvalidator,form-control,Angular,Dynamic,Angular Reactive Forms,Customvalidator,Form Control,我有一个父组件,在其中创建FormControl数组并使用Validations.required Validator初始化它 在子组件中,我根据父组件的输入(true/false)添加了一个动态验证器,但添加该验证器将从控件中删除“required” 如何将初始化的和以后添加的验证程序保存在表单控件中?根据正式文档 设置此控件上活动的同步验证程序调用此函数将覆盖任何现有的同步验证程序。 因此,重要的是要记住,通过使用此方法,您将覆盖现有的验证器,因此您将需要包括所有您需要/想要重置的控件的验证
在子组件中,我根据父组件的输入(true/false)添加了一个动态验证器,但添加该验证器将从控件中删除“required”
如何将初始化的和以后添加的验证程序保存在表单控件中?根据正式文档 设置此控件上活动的同步验证程序调用此函数将覆盖任何现有的同步验证程序。 因此,重要的是要记住,通过使用此方法,您将覆盖现有的验证器,因此您将需要包括所有您需要/想要重置的控件的验证器
官方文档:SetValidators将用您设置的内容覆盖验证程序。您需要做的是附加额外的验证器,以保持当前验证器的完整性。请参阅下面的代码以执行此操作
this.<<formControl>>.setValidators([
this.newValidator(),
this.<<formControl>>.validator
]);
this..setValidators([
这个.newValidator(),
这是验证器
]);
您不能,但您可以创建一个考虑两个控件值的自定义验证器。我不确定为什么每个人都拒绝它,因为已接受的答案对方法有效。请添加一个新的验证器,但如果条件发生变化,您无法删除它。我知道如果你在表格中勾选/取消勾选输入类型检查,你想添加/删除“必需”,这是一个很好的观点。谢谢,我知道接受的解决方案只有在你想添加验证器的情况下才有效,这涵盖了我目前的场景,但我会记住这一点是的,但我想知道如何包括所有验证器。因为初始化过程中设置的一个将丢失。上述解决方案有效