首页 > 解决方案 > 具有来自外部角度 7 的值的抽象控制

问题描述

当我打开有关角度材料的对话框时,我将一些数据发送到对话框

所以在对话框组件上,我创建自定义验证以检查值是否超过或低于但我不断收到属性未定义的错误

这是我的代码

  constructor(@Inject(MAT_DIALOG_DATA) public data: VendorDataMaster,
  private fb: FormBuilder,
  public usd: UserdetailsService ) { }

this.validateFormVendor = this.fb.group({
      InvoiceAmountcontrol: [ this.data.InvoiceAmount , [ Validators.required, this.ToleranceValidator] ],
      NoInvoicecontrol: [ this.data.NoInvoice, [ Validators.required ] ],
      DateInvoicecontrol: [ this.data.DateInvoice, [ Validators.required ] ],
      NoFakturPajakcontrol: [ this.data.NoFakturPajak, [ Validators.required ] ],
      DateFakturPajakcontrol: [ this.data.DateFakturPajak, [ Validators.required ] ],
      Statuscontrol : [ {value:this.data.StatusInv, disabled: true} ]
    });
  }
  ToleranceValidator(control: AbstractControl) {
// this is when the data is undifiend
      console.log(this.data.AmountGR)
      if (parseInt(control.value) >  parseInt(this.data.AmountGR) * 1) {
        return { ToleranceRange : true };
      }
      return null;
  }
  public hasError = (controlName: string, errorName: string) =>{
    return this.validateFormVendor.controls[controlName].hasError(errorName);
  }

我猜 ngif 的启动速度比 contractor 快,但我不知道会发生什么

我尝试使用 try catch 但没有解决问题,并且我将结果放在导出的组件上,以便我可以在对话框组件上使用它,但仍然不可靠

标签: javascriptangulartypescript

解决方案


设置ToleranceValidatorasync验证器,如下所示。而不是将其添加到数组的第二个值中,而是将其添加到第三个位置。

this.validateFormVendor = this.fb.group({
      InvoiceAmountcontrol: [ this.data.InvoiceAmount , [ Validators.required], this.ToleranceValidator ],
      NoInvoicecontrol: [ this.data.NoInvoice, [ Validators.required ] ],
      DateInvoicecontrol: [ this.data.DateInvoice, [ Validators.required ] ],
      NoFakturPajakcontrol: [ this.data.NoFakturPajak, [ Validators.required ] ],
      DateFakturPajakcontrol: [ this.data.DateFakturPajak, [ Validators.required ] ],
      Statuscontrol : [ {value:this.data.StatusInv, disabled: true} ]
    });
  }

推荐阅读