Angular2如何显示来自后端的错误消息
Angular2 How to display error message from backend
我想在 bootstrap 警报中显示错误消息。我使用 angular2 作为前端,使用 lumen 作为后端。
前端
<div class="alert alert-danger">
// Display error message here
</div>
我希望在前端显示来自验证函数的响应
public function uploadImage(Request $request)
{
$this->validate($request, [
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:60000',
]);
}
component.ts
uploadFile(): void {
let file = this.fileInput.nativeElement;
if (file.files && file.files[0]) {
let fileToUpload = file.files[0];
this.getInfoService
.uploadImage(fileToUpload)
.subscribe(
data => console.log("DATA", data),
err => console.log(err),
() => console.log("()",'yay')
);
}
}
为我服务
uploadImage(fileToUpload: any) {
let input = new FormData();
input.append("image", fileToUpload);
return this.http.post('http://Api.app/api/v1/uploadImage', input)
.map(
(response: Response) => {
console.log("Upload img service", response);
}
);
}
回应
我会将错误消息(如果返回)设置为一个 angular 变量,然后检查该变量是否存在以决定是否显示它。
<div *ngIf="errors" class="alert alert-danger">
{{ errors }}
</div>
组件:
uploadFile(): void {
this.errors = null;
let file = this.fileInput.nativeElement;
if (file.files && file.files[0]) {
let fileToUpload = file.files[0];
this.getInfoService
.uploadImage(fileToUpload)
.subscribe(
data => {
console.log("DATA", data)
},
err => {
this.errors = err
}
);
}
}
要正确显示所有消息,您可能需要遍历 JSON 响应并连接字符串,或将各个消息作为 <li>
元素添加到无序列表中。
在您的 http 请求中,您必须添加一个 catch,如下所示:
uploadImage(fileToUpload: any) {
let input = new FormData();
input.append("image", fileToUpload);
return this.http.post('http://Api.app/api/v1/uploadImage', input)
.map(
(response: Response) => {
console.log("Upload img service", response);
})
.catch(this.handleError);
}
然后添加handleError函数:
private handleError(error: any) {
let errMsg = (error.message) ? error.message :
error.status ? `${error.status} - ${error.statusText}` : 'Server error';
console.error(errMsg); // log to console instead
return Observable.of(error);
}
此 handleError 函数将从服务器端返回给您完整的响应。您可以轻松地从响应正文中提取错误消息并将其分配给变量。
然后你可以使用插值在bootstrap alert中显示错误信息。
我想在 bootstrap 警报中显示错误消息。我使用 angular2 作为前端,使用 lumen 作为后端。
前端
<div class="alert alert-danger">
// Display error message here
</div>
我希望在前端显示来自验证函数的响应
public function uploadImage(Request $request)
{
$this->validate($request, [
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:60000',
]);
}
component.ts
uploadFile(): void {
let file = this.fileInput.nativeElement;
if (file.files && file.files[0]) {
let fileToUpload = file.files[0];
this.getInfoService
.uploadImage(fileToUpload)
.subscribe(
data => console.log("DATA", data),
err => console.log(err),
() => console.log("()",'yay')
);
}
}
为我服务
uploadImage(fileToUpload: any) {
let input = new FormData();
input.append("image", fileToUpload);
return this.http.post('http://Api.app/api/v1/uploadImage', input)
.map(
(response: Response) => {
console.log("Upload img service", response);
}
);
}
回应
我会将错误消息(如果返回)设置为一个 angular 变量,然后检查该变量是否存在以决定是否显示它。
<div *ngIf="errors" class="alert alert-danger">
{{ errors }}
</div>
组件:
uploadFile(): void {
this.errors = null;
let file = this.fileInput.nativeElement;
if (file.files && file.files[0]) {
let fileToUpload = file.files[0];
this.getInfoService
.uploadImage(fileToUpload)
.subscribe(
data => {
console.log("DATA", data)
},
err => {
this.errors = err
}
);
}
}
要正确显示所有消息,您可能需要遍历 JSON 响应并连接字符串,或将各个消息作为 <li>
元素添加到无序列表中。
在您的 http 请求中,您必须添加一个 catch,如下所示:
uploadImage(fileToUpload: any) {
let input = new FormData();
input.append("image", fileToUpload);
return this.http.post('http://Api.app/api/v1/uploadImage', input)
.map(
(response: Response) => {
console.log("Upload img service", response);
})
.catch(this.handleError);
}
然后添加handleError函数:
private handleError(error: any) {
let errMsg = (error.message) ? error.message :
error.status ? `${error.status} - ${error.statusText}` : 'Server error';
console.error(errMsg); // log to console instead
return Observable.of(error);
}
此 handleError 函数将从服务器端返回给您完整的响应。您可以轻松地从响应正文中提取错误消息并将其分配给变量。
然后你可以使用插值在bootstrap alert中显示错误信息。