Angular 2 - 具有微服务的反应形式异步验证

时间:2017-07-18 06:33:19

标签: forms angular validation asynchronous angular2-forms

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

因此,如果某个人输入了他们的身份证号码并选择了一个国家/地区,则会向微服务部门发出请求,如果他们没有设置性别,则会自动填充该数据,之后他们可以将其更改为需要。

问题

  1. 根据以下情况,在验证器中设置其他表单控件值是好还是不行?
  2. 如果是这样,我将如何修改其他表单控件值?
  3. 任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:1)

就像我在评论中所说的那样,验证器不应该设置或更新表单控件,组或数组的值。它应该只验证。

然而,您可以使用.valueChanges收听表单的更改,并在回调检查中是否有某个控件有效,相应地更新其他控件。

以下是一个例子:

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

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