Как вызвать проверки проверки условно в угловых - PullRequest
1 голос
/ 08 ноября 2019

У меня есть приложение Angular 8. Он имеет форму, которая захватывает фильм и билеты.

Определение модели

export class Movie
{
  name:string;
}

export class Ticket
{
   name:string;
   price:number;
}

Использование реактивной формы для создания формы, как показано ниже.

  public buildForm(): FormGroup {
    return this.form = this.fb.group({
        /* primary */
        'name': ['', [Validators.required, Validators.minLength(3)]],
        /* tickets*/
        'tickets': this.fb.array([this.buidTicketForm()])
    })
  }

  public buidTicketForm(): FormGroup {
    return this.fb.group({
        'name': ['',[Validators.required, Validators.minLength(3)]],
        'price': [0.00,[Validators.required, Validators.min(0.00)]],
    })
}

Теперь мое требованиеозначает, что проверки, связанные с заявкой, должны запускаться условно.

Как если проверки заявок должны выполняться только , если ticketName не равно NULL, иначе нет необходимости проверять проверки.

Спасибо!

1 Ответ

0 голосов
/ 08 ноября 2019

Вы можете либо создать пользовательский валидатор , либо сделать условный метод, как показано ниже:

  private setValidators(formKey: string) {
    if (this.form.get('name').value !== null) {
      return [
        Validators.required,
        formKey === 'name' ? Validators.minLength(3) : Validators.min(0.00)
      ];
    }

Затем примените его к построителю форм:

public buidTicketForm(): FormGroup {
  return this.fb.group({
      'name': ['',this.setValidators('name')],
      'price': [0.00,this.setValidators('price')],
  });
}
...