为什么未在formarray自定义验证值更改中设置错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么未在formarray自定义验证值更改中设置错误相关的知识,希望对你有一定的参考价值。

我有一个下面的演示应用程序,试图在自定义验证器中设置错误,为什么未设置该错误。

步骤:单击添加用户,然后键入值。关于值更改,我已经致电客户验证程序并设置了错误或返回了错误,但未设置。

演示:demos

import { Component, VERSION } from '@angular/core';
import { FormArray, FormBuilder, FormGroup ,AbstractControl,Validators} from '@angular/forms';
@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
   myForm: FormGroup;

  constructor(private fb: FormBuilder) { }

  ngOnInit() {
    this.myForm = this.fb.group({
      email: '',
      users: this.fb.array([])
    })
  }

  get userForms() {
    return this.myForm.get('users') as FormArray
  }

  getColors(index) {
    return this.userForms.get([index, 'colors']) as FormArray;
  }

  addUser() {
    const userGroup = this.fb.group({
      user: [],
      colors: this.fb.array([])
    })

    userGroup.controls['user'].setValidators(this.validateMobileNo);

    this.userForms.push(userGroup);
  }

  deleteUser(i) {
    this.userForms.removeAt(i);
  }

  addColor(index: number) {
    const colorGroup = this.fb.group({
      color: []
    })

    this.getColors(index).push(colorGroup);
  }

  deleteColor(userIndex: number, colorIndex: number) {
    this.getColors(userIndex).removeAt(colorIndex)
  }




  validateMobileNo(controller: AbstractControl): { [key: string]: any } {        console.log(controller.value);



    console.log("Returning null");
    controller.setErrors({error: "ghhggh"});
    return {error: "ghhggh"};
  }
}
答案

[在运行时添加或删除验证器时,必须调用updateValueAndValidity()才能使新验证生效。

以上是关于为什么未在formarray自定义验证值更改中设置错误的主要内容,如果未能解决你的问题,请参考以下文章

未在具有自定义文本字段的自定义 TableView 中设置第一响应者

formArray的角异步自定义验证器

[PHP警告:mail():“sendmail_from”未在php.ini中设置或自定义“From:”标头丢失

无法在导航条中设置自定义大标题

如何在 FormArray 中设置 FormControl 的值

未在 UICollectionViewCell 中的 UILabel(或 UITextField)中设置文本