Angularjs 角触发远程错误

Angularjs 角触发远程错误,angularjs,angular-formly,Angularjs,Angular Formly,如何触发存档错误?假设我们得到的表单包括姓名、电子邮件、密码。我们在服务器端检查电子邮件的唯一性,服务器发送对象,如{email:['ready take','other error']等。我如何才能点击表单并触发字段上的那些内容?听起来像是你想对输入字段进行异步验证。我假设你想做类似的事情 关于具体的解决方案,请参见此我明白了-我不清楚 您可以在formly asyncValidator中调用validation服务,然后解析结果,并使用scope.fc.$setValidation在字段上手

如何触发存档错误?假设我们得到的表单包括姓名、电子邮件、密码。我们在服务器端检查电子邮件的唯一性,服务器发送对象,如{email:['ready take','other error']等。我如何才能点击表单并触发字段上的那些内容?

听起来像是你想对输入字段进行异步验证。我假设你想做类似的事情


关于具体的解决方案,请参见此

我明白了-我不清楚

您可以在formly asyncValidator中调用validation服务,然后解析结果,并使用
scope.fc.$setValidation
在字段上手动设置验证状态。可以在
验证
部分中注册消息

    validators: {
      asyncMultiValidator: {
        expression: function(viewValue, modelValue, scope) {
          $http.get('...validation-url...').success(function(result) {
            //assuming the service returns a map of validation results as {'validationName': isValid (boolean) }
            angular.foreach(result, function(isValid, validationName) {
              scope.fc.$setValidity(validationName, isValid);
            });
          })

          // this dummy validator is always valid
          return true;
        },
        message: 'dummy message - not being used'
      }
    },
    validation: {
      messages: {
        required: function(viewValue, modelValue, scope) {
          return scope.to.label + ' is required'
        },
        remote: function(viewValue, modelValue, scope) {
          return 'some remote error';
        }
      }

你有任何代码可以向我们展示你以前的尝试吗?我建议你看看这个免费的egghead.io课程:@Elrond正在使用angular formly,它有一个简单的
验证器
API,它在引擎盖下使用
$asyncValidators
API。这个答案对于普通的angular Form来说非常好,实际上可以与angular-f一起工作当然,还有一种更简单的方法。不具体,异步验证器是可以的-它将“动态”生效,但在用户点击“提交”时生效可能会发生很多事情。最终验证在服务器端,如果需要,它会返回带有错误的对象。我可以得到此响应并将其显示在警报框或其他东西中,但最好将一些错误样式应用于带有错误的字段等。在essens中,我需要一些tap函数来执行makeInvalid(fieldKey)等等…angular formly中是否有smth?如果表单通过客户端的所有本地和远程验证,那么它是有效的。这种情况如何:表单通过客户端的所有验证并提交到后端-后端尝试保存,但验证失败,并返回对象{‘email’:[‘email ready take']}-从这一点上说,我想将此传递到formly表单以触发此错误。我不想(动态)验证此异步,但在提交之后。我尝试运行signup.form.$setValidity('email',false);这将再次禁用提交按钮,但电子邮件字段不会更改为错误状态,也不可能再次启用提交必须在字段级别设置验证。目前您只需设置整个表单的验证。请尝试:
signup.form.email.$setValidity
-不知道这是否是正确的语法,但是您不需要使用字段而不是formok,但是如何迭代字段?-它们不在Formy form中的集合中,例如:Formy\u 1\u input\u displayName\u 0:Object Formy\u 1\u input\u email\u 1:ObjectFormy\u 1\u input\u password\u 2:Object等等。。。。