【问题标题】:Iterating through an array in angular2 typescript遍历angular2 typescript中的数组
【发布时间】:2017-01-06 10:09:49
【问题描述】:

我是 typescript 和 angular2 的新手,正在学习这个,我遇到了这个问题。我有一个表单,我想显示一组项目的结果,但这些项目每次都在变化,所以我现在没有返回结果的实际索引。

是这样的

我有这个form.html

<span style="color:red">{{usererror.username}}  </span>
...other items here
<span style="color:red">{{usererror.password}}  </span>

现在在组件中

export class LoginComponent implements OnInit{
 public usererror={
    username:"",
    password:""
  }

  //this function is called after a post request
onLoginError(error:any){

let message= JSON.parse( error._body);
  console.log(error._body); //first log
  console.log(message)  //second log


}

}

与上述函数一样,第一个日志返回表单的数组

[{"field":"username","message":"Username cannot be blank."},
  {"field":"password","message":"Password cannot be blank."}]

现在我想在上面的 usererror 中分​​配用户名和密码变量,以便它们可以显示

像这样的

onLoginError(error:any){

let message= JSON.parse( error._body);
   let message= JSON.parse( error._body);

    for (var i=0; i<message.length; i++){
     this.usererror.message[i].field = message[i].message;  //this fails since the 
         //usererror doesnt have (message[i].field) property

     }
 }

有时返回的结果没有用户名字段,有时没有密码字段。我该怎么做,我还是 angular2 和 typescript 的新手

【问题讨论】:

    标签: javascript arrays angular typescript


    【解决方案1】:

    使用方括号表示法 (object["property"]):

    let messages= JSON.parse( error._body);
    for (let message of messages){
        if(this.usererror[message.field])
          this.usererror[message.field]=message.message;
    }
    

    【讨论】:

      【解决方案2】:

      如果您只需要在尝试复制消息之前检查this.usererror.message[i].field 是否存在,那么您可以像这样包含if 语句:

      for (var i=0; i<message.length; i++){
          if(this.usererror.message[i].field){
              this.usererror.message[i].field = message[i].message;
          }
      }
      

      如果字段是undefined,因为它不存在,那么if 语句将返回false

      【讨论】:

      • 它是真的,它总是返回未定义的,我在 console.log(this.usererror.message[i].field) 上检查过,它是空的,但消息数组有值,字段名称类似于usererror 模型,可能是什么原因造成的
      • 您能否在问题中说明this.usererror 的填充方式?
      猜你喜欢
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      • 2018-04-22
      • 1970-01-01
      • 2019-08-29
      • 1970-01-01
      • 2021-12-12
      • 2017-10-06
      相关资源
      最近更新 更多