代码之家  ›  专栏  ›  技术社区  ›  Vingtoft

角度2:FormGroup:如何显示自定义错误消息

  •  5
  • Vingtoft  · 技术社区  · 7 年前

    我正在使用Angular4构建前端。 如果用户提交了错误的表单,则应显示错误消息。

    // This code is run when a response from the server is received
    if ('error' in server_response) {
        for (let key in server_response.error {
          this.form.controls[key].setErrors({'error': true});
          let error_message_from_server = server_response.error[key];
        }
    }
    

    如何在HTML中显示错误:

    <span class="error" *ngIf="field.invalid">Error: {{field.errors.error}} <br></span>
    

    目前 field.invalid 当收到错误时变为true,但 field.errors.error 在空字符串中。

    问题: 如何设置 field.errors.error字段错误 消息此消息应为中的字符串 error_message_from_server

    2 回复  |  直到 7 年前
        1
  •  3
  •   Jorawar Singh    7 年前

    this.form.controls[key].setErrors({'error': true}); //键是错误,值是 布尔型 不是一个

    尝试设置字符串类型值

    for (let key in server_response.error {
      this.form.controls[key].setErrors({'error': erver_response.error[key]});
    //Calling `setErrors` will also update the validity of the parent control.
    }
    
        2
  •  2
  •   BogdanC    7 年前

    为了使错误字符串在html级别可用,您必须在组件级别声明它:

    error_message_from_server: string;

    然后,在服务器的响应中,将消息设置为该字符串:

    // This code is run when a response from the server is received
    if ('error' in server_response) {
        for (let key in server_response.error {
          this.form.controls[key].setErrors({'error': true});
          error_message_from_server = server_response.error[key];
        }
    }
    

    然后将字符串绑定到元素中:

    <span class="error" *ngIf="field.invalid">Error: {{error_message_from_server}} <br></span>