【问题标题】:Injecting Angular service in custom Angular validator在自定义 Angular 验证器中注入 Angular 服务
【发布时间】:2020-04-29 18:04:44
【问题描述】:

我在 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 };
}

【问题讨论】:

    标签: angular dependency-injection angular-validation angular-di


    【解决方案1】:

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

     this.portId.setValidators([
       Validators.required,
       validateFund(this.fundService),
     ]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-30
      • 1970-01-01
      • 2017-07-27
      • 2019-03-12
      • 2018-03-08
      • 2022-06-10
      • 2016-05-16
      相关资源
      最近更新 更多