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

问题描述 投票:0回答:1

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

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

演示: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"};
  }
}
angular angular8 angular-reactive-forms angular-forms angular9
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.