Angular 2 - 带有微服务的反应式表单异步验证

Angular 2 - Reactive Form Asynchronous Validation w/ Microservice

一直在考虑为表单实施异步 custom validator,其唯一目的是与微服务通信以从个人 ID 号码中提取信息(如年龄、出生日期、性别、种族等) ) 当然还有身份证号码是否有效取决于他们发送的国家/地区。

因此,如果一个人输入他们的身份证号码并选择一个国家,就会向微服务发出一个请求,如果他们没有设置他们的性别,例如,它会自动填充它,他们可以将其更改为之后如果需要的话。

问题

  1. 根据以下场景在验证器中设置其他表单控件值是否good/OK实践?
  2. 如果是这样,我将如何修改其他表单控件值?

任何帮助将不胜感激:)

正如我在评论中所说,验证器永远不应该设置或更新表单控件、组或数组的值。它应该只验证。

然而你可以做的是使用 .valueChanges 来监听表单的变化,并在回调中检查某个控件是否有效,相应地更新一些其他控件。

这是一个例子:

this.form.get('someControl').valueChanges(() => {

  if (this.form.get('someControl').valid) {
    this.form.get('someOtherControl').setValue(true);
  }
});