角度-在formControl上设置值而不会重置错误

时间:2018-07-31 16:36:27

标签: angular forms validation setvalue form-control

我在Angular 6中遇到以下问题:

我试图使用.setErrors()手动在formControl上设置errors属性,然后使用.setValue()设置值。 setValue方法。对我不利的是,.setValue()重新运行验证并将formControl上的errors属性重置为null。像这样:

import { OnInit} from '@angular/core';
import { FormControl} from '@angular/forms';

export class CustomComponent implements OnInit {
  formControl: FormControl;

  ngOnInit() {
    this.formControl = new FormControl();
    this.formControl.setErrors({required: true});
    this.formControl.setValue('foo'); // resets formControl.errors to null
    console.log(this.formControl.errors); // returns null
  }

}

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我实际上知道了。您可以使用.disable()来禁用对formControl的自动验证-如果您像我这样以抽象方式使用formControl,效果很好。

import { OnInit} from '@angular/core';
import { FormControl} from '@angular/forms';

export class CustomComponent implements OnInit {
  formControl: FormControl;

  ngOnInit() {
    this.formControl = new FormControl();
    this.formControl.disable({onlySelf: true, emitEvent: false});
    this.formControl.setErrors({required: true});
    this.formControl.setValue('foo');
    console.log(this.formControl.errors); // returns 'foo'
  }

}

如果需要在模板中与之交互,则可以使用.enable()重新启用formControl。 在这里https://angular.io/api/forms/AbstractControl#disable

了解更多