Có hai loại vụ việc phê chuẩn server:
- Những người toàn cầu (đối với toàn bộ hình thức hoặc tương ứng với một lỗi trong các hình thức nộp hồ sơ)
- những người liên quan đến lĩnh vực
Đối với một, chỉ cần trích xuất các thông điệp từ payload phản ứng và đặt nó vào một tài sản của thành phần của bạn để hiển thị nó vào mẫu liên quan:
@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})`;
}
);
}
}
Tôi giả định rằng tải trọng đáp ứng cho lỗi là một JSON một và tương ứng như sau:
{
"code": 422,
"description": "Some description",
"reasonPhrase": "Unprocessable Entity"
}
Đối với một thứ hai, bạn có thể thiết lập nhận lỗi thông báo trong các điều khiển được liên kết với các đầu vào biểu mẫu, như được mô tả bên dưới:
@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 });
});
}
);
}
}
Tôi giả định tải trọng phản hồi lỗi là một JSON và tương ứng với các điều sau:
{
messages: [
{
"property": "name",
"message": "The value can't be empty"
]
}
Để biết thêm chi tiết bạn có thể có một cái nhìn tại dự án này:
Nguồn
2016-02-09 06:48:38
Các liên kết dường như đã chết. – DDiVita
@DDiVita Tôi đã sửa các liên kết. – Ergwun