gpt4 book ai didi

validation - Angular 2(测试版)服务器端验证消息

转载 作者:太空狗 更新时间:2023-10-29 17:21:41 25 4
gpt4 key购买 nike

我正在寻找一种优雅的方式来显示来自服务器端 API 的验证消息,而无需创建自定义验证器或在 UI 中对所有可能的消息进行硬编码。

我需要向特定字段以及整个表单添加错误消息。

这必须在 Angular 2.0.0-beta.3 中工作

最佳答案

有两种服务器验证:

  • 全局的(针对整个表单或对应于表单提交过程中的错误)
  • 领域相关的

对于第一个,只需从响应负载中提取消息并将其放入组件的属性中以将其显示到关联的模板中:

@Component({
(...)
template: `
<form (submit)="onSubmit()">
(...)
<div *ngIf="errorMessage">{{errorMessage}}</div>
<button type="submit">Submit</button>
</form>
`
})
export class MyComponent {
(...)

onSubmit() {
this.http.post('http://...', data)
.map(res => res.json())
.subscribe(
(data) => {
// Success callback
},
(errorData) => {
// Error callback
var error = errorData.json();
this.error = `${error.reasonPhrase} (${error.code})`;
}
);
}
}

我假设错误的响应负载是一个 JSON 并且对应于以下内容:

{
"code": 422,
"description": "Some description",
"reasonPhrase": "Unprocessable Entity"
}

对于第二个,您可以在与表单输入关联的控件中设置收到的错误消息,如下所述:

@Component({
(...)
template: `
<form [ngFormModel]="myForm" (submit)="onSubmit()">
(...)
Name: <input [ngFormControl]="myForm.controls.name"/>
<span *ngIf="myForm.controls.name.errors?.remote"></span>
(...)
<button type="submit">Submit</button>
</form>
`
})
export class MyComponent {
(...)

constructor(builder:FormBuilder) {
this.myForm = this.companyForm = builder.group({
name: ['', Validators.required ]
});
}

onSubmit() {
this.http.post('http://...', data)
.map(res => res.json())
.subscribe(
(data) => {
// Success callback
},
(errorData) => {
// Error callback
var error = errorData.json();
var messages = error.messages;
messages.forEach((message) => {
this.companyForm.controls[message.property].setErrors({
remote: message.message });
});
}
);
}
}

我假设错误的响应负载是一个 JSON 并且对应于以下内容:

{
messages: [
{
"property": "name",
"message": "The value can't be empty"
]
}

更多细节你可以看看这个项目:

关于validation - Angular 2(测试版)服务器端验证消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35280787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com