Angular 具有不同验证的反应式表单按钮
Angular Reactive Forms Buttons with different validations
我正在考虑用响应式表单做一个简单的表单。
我想我会遇到的问题是当我在表单上有两个需要不同验证的按钮时。
例如,Andy 向 Bobby 提交了一个请求。 Bobby 然后通过单击批准来批准请求,或者通过单击拒绝来拒绝请求。
然而...拒绝将需要填写评论字段。在不向表单添加更多字段的情况下解决此问题的最佳方法是什么?
它还必须是动态的,需要对每个按钮进行验证的字段可能会发生变化,因此我无法将不同的代码添加到按钮上。
我希望这两个按钮都可以点击,以便用户可以看到满足或不满足哪些验证。
根据我对你的问题的理解,我看到了两种可能性,都可以用 'reactive forms api' 来处理:
动态添加控件到您的表单(例如:当用户选中 'rejected' 时,会出现一个新的评论字段)
=> 使用 FomGroup class
的 addControl / removeControl 方法
动态添加验证器 到已经存在的控件(例如:当用户单击 'rejected' 提交按钮时,评论字段变成必需的)
=> 使用 AbstractControl class
的 setValidators 方法
另外,修改控件或验证器后不要忘记调用 updateValueAndValidity 方法(AbstractControl class),否则将检测不到更改。
这是一篇关于该主题的优秀文章:
https://netbasal.com/three-ways-to-dynamically-alter-your-form-validation-in-angular-e5fd15f1e946
我正在考虑用响应式表单做一个简单的表单。
我想我会遇到的问题是当我在表单上有两个需要不同验证的按钮时。
例如,Andy 向 Bobby 提交了一个请求。 Bobby 然后通过单击批准来批准请求,或者通过单击拒绝来拒绝请求。
然而...拒绝将需要填写评论字段。在不向表单添加更多字段的情况下解决此问题的最佳方法是什么?
它还必须是动态的,需要对每个按钮进行验证的字段可能会发生变化,因此我无法将不同的代码添加到按钮上。
我希望这两个按钮都可以点击,以便用户可以看到满足或不满足哪些验证。
根据我对你的问题的理解,我看到了两种可能性,都可以用 'reactive forms api' 来处理:
动态添加控件到您的表单(例如:当用户选中 'rejected' 时,会出现一个新的评论字段) => 使用 FomGroup class
的 addControl / removeControl 方法
动态添加验证器 到已经存在的控件(例如:当用户单击 'rejected' 提交按钮时,评论字段变成必需的) => 使用 AbstractControl class
的 setValidators 方法
另外,修改控件或验证器后不要忘记调用 updateValueAndValidity 方法(AbstractControl class),否则将检测不到更改。
这是一篇关于该主题的优秀文章: https://netbasal.com/three-ways-to-dynamically-alter-your-form-validation-in-angular-e5fd15f1e946