私は前部にAngular、後部にLaravel 5.0を使用するアプリケーションを開発しようとしています。角度4.x HTTPクライアントのエラー処理
HTTPリクエストでは、エラーが発生することがあります。
これは角度 JSON ように私のメニューを提供し、私のMenuController.phpです:
private menusUrl = '/api/menu';
constructor (private http: Http) {}
getMenus(): Observable<Menu[]> {
return this.http.get(this.menusUrl)
.map(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
return body.data || { };
}
private handleError (error: Response | any) {
let errMsg: string;
if (error instanceof Response) {
const body = error.json() || '';
const err = body.error || JSON.stringify(body);
errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
} else {
errMsg = error.message ? error.message : error.toString();
}
console.error(errMsg);
return Observable.throw(errMsg);
}
:これは私のmenu.service.tsある if($control){
$response->data = Menu::get()->toArray();
}
if(!$control) {
$response->error = 'Error!';
}
return json_encode($response);
そして、
これはです。menu-index.component.ts:
errorMessage: string;
menus: Menu[];
mode = 'Observable';
constructor(private menusService: MenusService) { }
ngOnInit() { this.getMenus(); }
getMenus() {
this.menusService.getMenus()
.subscribe(
menus => this.menus = menus,
error => this.errorMessage = <any>error);
}
Laravelからメニューを取得する部分はうまく動作しますが、エラーメッセージが表示されませんでした。
ヒント:Angular HTTP Clientチュートリアルで示されているものとほぼ同じです。主な問題は、Laravelを使用してエラーを返すと、Angularがエラーをキャッチすることです。
親愛なる@Leonardは、シリアル化のヒントをありがとうございました。しかし、2番目のヒントは私の問題を解決しませんでした。 – yenerunver