【问题标题】:Angular - set value on formControl without resetting errorsAngular - 在 formControl 上设置值而不重置错误
【发布时间】:2018-07-31 16:36:26
【问题描述】:

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
  }

}

有什么想法吗?

【问题讨论】:

    标签: angular forms validation setvalue form-control


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2018-03-15
      • 2020-01-19
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      • 2020-07-26
      • 2018-12-03
      • 2021-09-22
      相关资源
      最近更新 更多