我想使用带有两个updateOn选项(模糊和更改)的两个自定义验证功能。这种情况是在更改密码时,应使用默认值为updateOn:'change'的密码策略对新密码进行验证,并且还应使用updateOn:'blur'选项的当前密码对新密码进行验证。
newPassword: new FormControl('', { validators: [Validators.required, passwordMatch()], asyncValidators: [validatePassword()], updateOn: 'blur' }),
我想使用updateOn:'blur'验证passwordMatch()的密码,并用updateOn:'change'验证validatePassword()的同一表单控件
答案 0 :(得分:0)
我认为这是不可能的,但是您可以在Submit中添加asyncValidator。在updateValueAndValidity之后,订阅statusChange,然后在此订阅中检查提交表单是否有效
@Override
public Integer insertOrUpdate(final Email e) {
if (e == null) throw new IllegalArgumentException();
if (e.getIdEmail() != null) {
String sql = "UPDATE Email SET email=? WHERE idEmail=?";
jdbcTemplate.update(sql, e.getEmail(), e.getIdEmail());
return e.getIdEmail();
}
else {
final String sql = "INSERT IGNORE INTO Email (email) VALUES (?) ON DUPLICATE KEY UPDATE email=email";
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
ps.setString(1, e.getEmail());
return ps;
}
}, keyHolder);
return ((Long) keyHolder.getKey()).intValue();
}
}
请参阅stackblitz