我的应用程序中有一个寄存器模型,如下所示:
public class UserRegisterDTO
{
public int Id { get; set; }
[Required]
public string Username { get; set; }
[Required]
[StringLength(12, MinimumLength = 8, ErrorMessage = "You must specify password between 8 and 12 chars.")]
public string Password { get; set; }
}
然后我像这样通过 angular 6 向服务器发送注册请求:
register() {
this.authService.register(this.model).subscribe(() => {
this.alertify.success('Registration successful');
}, error => {
console.log(error);
this.alertify.error(error);
});
}
当我向服务器发布错误模型时,ModelValidation 工作正常并返回 ModelState 错误,但是 console.log(error) 显示如下对象:
{Password: Array(1), Username: Array(1)}
Password: ["You must specify password between 8 and 12 chars."]
Username: ["The Username field is required."]
__proto__:
constructor: ƒ Object()
hasOwnProperty: ƒ hasOwnProperty()
isPrototypeOf: ƒ isPrototypeOf()
propertyIsEnumerable: ƒ propertyIsEnumerable()
toLocaleString: ƒ toLocaleString()
toString: ƒ ()
valueOf: ƒ valueOf()
__defineGetter__: ƒ __defineGetter__()
__defineSetter__: ƒ __defineSetter__()
__lookupGetter__: ƒ __lookupGetter__()
__lookupSetter__: ƒ __lookupSetter__()
get __proto__: ƒ __proto__()
set __proto__: ƒ __proto__()
我想将错误消息放入一个字符串数组中。我尝试了 JOSN.stringify(error) 但它没有解决我的问题。
你能帮帮我吗?
请您参考如下方法:
您可以轻松编写一个函数,将模型错误对象转换为您想要的形式。如果我正确理解了您的要求,那么下面的函数应该可以解决问题。
transformError(err: { [key:string]: any }) {
const messages: string[] = [];
if (err) {
for (let key of err) {
for (let message of err[key]) {
messages.push(`${key}: ${message}`);
}
}
}
return messages;
}
register() {
this.authService.register(this.model).subscribe(() => {
this.alertify.success('Registration successful');
}, error => {
const messages = this.transformError(error);
this.alertify.error(messages);
});
}
