почему ошибка не установлена ​​в формате - PullRequest
0 голосов
/ 17 июня 2020

У меня есть демонстрационное приложение, показанное ниже, и я пытаюсь установить ошибки в пользовательских валидаторах, почему они не установлены.

Шаг: нажмите «Добавить пользователей» и введите значение. При изменении значения я вызываю валидатор клиента и устанавливаю ошибку или возвращаю ошибку, но она не установлена.

демонстрация: демонстрация

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"};
  }
}

1 Ответ

0 голосов
/ 17 июня 2020

Когда вы добавляете или удаляете валидатор во время выполнения, вы должны вызвать updateValueAndValidity (), чтобы новая валидация вступила в силу.

this.<formgroup>.updateValueAndValidity()

Calling specific control:

this.<formgroup>.control[<'controlname'>].updateValueAndValidity()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...