Angular 角度:将验证器应用于表单控件以外的控件

Angular 角度:将验证器应用于表单控件以外的控件,angular,angular-forms,Angular,Angular Forms,我们的应用程序使用服务器数据,并在应用程序的各个部分(而不是同时)以反应形式显示它 我们不仅需要能够在这些不同的表单中验证数据,还需要在更高的级别上验证数据,在这个级别上,我们可以说所有数据都是有效的,无论用户是否在表单上 我们希望能够使用相同的逻辑来验证表单和服务器数据,以避免重复 我们尝试将数据传递给内置验证器,但这些验证器只接受FormControls。我们最有可能使用自定义验证器并使这些函数接受“any”。。。但这似乎并不正确 将验证器应用于数据而不是表单控件(如果可能)的首选/正确方法

我们的应用程序使用服务器数据,并在应用程序的各个部分(而不是同时)以反应形式显示它

我们不仅需要能够在这些不同的表单中验证数据,还需要在更高的级别上验证数据,在这个级别上,我们可以说所有数据都是有效的,无论用户是否在表单上

我们希望能够使用相同的逻辑来验证表单和服务器数据,以避免重复

我们尝试将数据传递给内置验证器,但这些验证器只接受FormControls。我们最有可能使用自定义验证器并使这些函数接受“any”。。。但这似乎并不正确


将验证器应用于数据而不是表单控件(如果可能)的首选/正确方法是什么

你总是可以创建一个表单组,记住,表单组是独立存在的——不管你有没有输入——我认为这有点“用大锤敲开螺母”——但无论如何,我举了一个例子

 data = { email: "qqq@qqq.com", name: "" };

 checkData(data:any){
    const fool = new FormGroup({
      email: new FormControl("", [Validators.required, Validators.email]),
      name: new FormControl("", [Validators.required])
    });
    fool.setValue(data);
    return (fool.valid)
  }

但验证器只是一个函数,如果没有错误则返回null,如果有错误则返回对象。您可以使类似“验证器”的函数只作为参数获取,而不是抽象控件获取-

如何保存表单数据?i、 e.服务/国家管理