0

我在 Angular 中创建了一个自定义验证器。我在验证器validateFund函数中使用了 Angular 服务。但是,Angular 提供了一个新的服务实例;当我尝试验证数据时,我的验证总是失败,因为服务实例是新的并且没有服务的其他实例中存在的数据。

这是验证器:

export function validateFund(control: AbstractControl): ValidationErrors | null {
  const injector = Injector.create([{ provide: FundOrgService, deps: [] }]);

  const fundOrgService = injector.get(FundOrgService);
  console.log(fundOrgService.funds);
  const fund: Fund = control.value;
  const check = fundOrgService.getFundById(fund.portId);

  return fund && check ? null : { 'fund-validity': true };
}
4

1 回答 1

0

才想出答案。Angular 中的自定义验证器是纯 JavaScript 函数,您需要自己传入 Angular Service 的实例。

 this.portId.setValidators([
   Validators.required,
   validateFund(this.fundService),
 ]);
于 2020-05-05T14:26:54.300 回答