Angular 7:当模型的属性更改时如何重新验证控件

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

我有一个模板驱动的表单,该表单具有一个输入控件,我需要使用一个自定义验证程序对我模型中的属性值进行验证(该属性根据下拉列表中的选择而动态变化)。每当我输入输入控件时,它都可以正常工作,但是我希望在属性值更改时也可以进行验证(而不必在输入框中更改值)。有办法实现吗?

下面是我使用的模型,标记和验证器的简化版本

型号:

 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;
  }
angular angular-forms angular-validation
1个回答
0
投票
我所做的是手动调度事件

const event = new Event('change', { bubbles: true, cancelable: false }); //Create an event let siblingInput = ele.parentNode['previousElementSibling']['firstChild'] as HTMLInputElement; //Get the element siblingInput.dispatchEvent(event); //Dispatch event

这将重新验证控件
© www.soinside.com 2019 - 2024. All rights reserved.