是打字稿和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来说还是新手
答案 0 :(得分:2)
使用方括号表示法(object["property"]
):
let messages= JSON.parse( error._body);
for (let message of messages){
if(this.usererror[message.field])
this.usererror[message.field]=message.message;
}
答案 1 :(得分:1)
如果您只需检查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
。