Angular7。第一次不要以反应形式检查验证

时间:2019-11-27 16:30:39

标签: angular angular-reactive-forms

在Angular 7中,我有以下代码:

    this.formGroup = this.formBuilder.group({
      id: [],
      name: ['', [Validators.required], this.validateSomething.bind(this)],
    });

然后我做一些事情,最后用从数据库中获取的对象myObject初始化值,并且我知道它不会破坏任何验证:

    this.formGroup.setValue({
      id: myObject.id,
      name: myObject.name
    }, {
      emitEvent: false
    });

我的validateSomething非常复杂,我想在最初的setValue中并没有节省一些计算。

我找到了函数setValidators(),我认为我可以做类似的事情:

  • 第一:
    this.formGroup = this.formBuilder.group({
      id: [],
      name: ['', [Validators.required]],
    });
  • 然后:
    this.formGroup.setValue({
      id: myObject.id,
      name: myObject.name
    }, {
      emitEvent: false
    });
  • 之后:
this.formGroup.controls.name.setValidator(validateSomething.bind(this));

但是它不起作用。验证根本不起作用了。

有什么主意吗?谢谢!

1 个答案:

答案 0 :(得分:1)

在验证方法validateSomething中,您可以在验证之前检查该字段是touched和/还是dirty

类似的东西:

this.myForm.get('name').touched && this.myForm.get('name').dirty