我当时想用反应式做一个简单的形式。
我想我要解决的问题是当表单上有两个需要不同验证的按钮时。
例如,Andy向Bobby提交了一个请求。然后,Bobby可以通过单击“批准”来批准请求,或者通过单击“拒绝”来拒绝请求。
但是...拒绝将需要填写评论字段。在不向表单中添加更多字段的最佳方法是什么?
而且它必须是动态的,需要验证每个按钮的字段可以更改,因此我不能仅将不同的代码烘焙到按钮上。
我希望两个按钮都可以单击,以便用户可以看到符合或不符合的验证。
答案 0 :(得分:1)
根据我对您问题的理解,我看到两种可能性,都可以使用“反应形式api”来处理:
向表单动态添加控件(例如:当用户选中“已拒绝”时,会出现一个新的注释字段) =>使用FomGroup类的addControl / removeControl方法
动态添加验证器到已经存在的控件中(例如:当用户单击“已拒绝”提交按钮时,必填字段必填) =>使用AbstractControl类的setValidators方法
此外,在修改控件或验证器之后,请勿再尝试调用updateValueAndValidity方法(AbstractControl类),否则将不会检测到更改。
以下是关于该主题的出色文章: https://netbasal.com/three-ways-to-dynamically-alter-your-form-validation-in-angular-e5fd15f1e946