Angular 7: Как повторно проверить элемент управления при изменении свойства модели - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть управляемая шаблоном форма, в которой есть элемент управления вводом, который мне нужно проверить с помощью пользовательского валидатора относительно значения свойства в моей модели (которое изменяется динамически в зависимости от выбора из выпадающего списка).Он прекрасно работает всякий раз, когда я набираю элемент управления вводом, но я бы хотел, чтобы проверка происходила также при изменении значения свойства (без необходимости изменения значения в поле ввода).Есть ли способ добиться этого ??

Ниже приведена урезанная версия модели, разметки и используемого мной средства проверки

Модель:

 amountToInvest: number = null;
 public onAccountSelectionChanged(event): void {     
    // find the account based on the selection from this drop down list
    this.availableFunds = account.AvailableFunds;
  }

Разметка

<form name="form" (ngSubmit)="myForm.form.valid && onSubmit()" >
    <input type="number" [(ngModel)]="amountToInvest"' [customMax]="availableFunds">

Валидатор

@Directive({
  selector: '[customMax][formControlName],[customMax][formControl],[customMax][ngModel]',
  providers: [{provide: NG_VALIDATORS, useExisting: CustomMaxDirective, multi: true}]
})
export class CustomMaxDirective implements Validator {
  @Input()
  customMax: number;

  validate(c: FormControl): {[key: string]: any} {
      let v = c.value;
      return ( v > this.customMax)? {"customMax": true} : null;
  }
...