HttpClientを使用したAngular6。現在、インターセプターは実装されていません。
MSGraphへのhttp呼び出しを行う管理サービスがあります。この場合、通知ハンドラーに送信しているエラー400の不正な要求が発生します。
そのconsole.logをスライドして、エラーブロックがまったく発生していないことを確認し、別のcnosole.logをスライドして、サーバーから返される「データ」がエラーであるかどうかを確認しました。
Console.logsはいずれも起動しませんが、グローバルエラーハンドラーはコンソールに400の不正な要求応答を表示します。
この応答を使用して、ユーザーフレンドリーなメッセージを表示できるようにしたいと思います。
コード:
this.http.get(this.GRAPH_ROOT_URL + this.APP_ID, { headers }).subscribe(data => {
this.notification.done(data);
console.log(data);
}), error => {
this.notification.error(`Error getting users from Microsoft GRAPH API. Reason: ${error}`)
console.log("this is observable error", error);
}
Angular6はRxJS6を使用しており、多くの変更が加えられています。それがあなたが使用しているものであると仮定すると、これは私が使用するものです:
これが私が使うものです:
this.http.get(this.GRAPH_ROOT_URL + this.APP_ID, { headers })
.pipe(catchError(err => {
this.alert.error('There was an error getting data');
return throwError(err);
})).subscribe(data => this.notification.done(data));
したがって、pipe
を使用してcatchError
を呼び出します。これにより、サーバーエラーが正しく処理されます。
catchError
を使用するには、次のように最初にインポートする必要があります。
import { catchError } from 'rxjs/operators';