Angular(4.3.6)アプリケーションでは、私は非同期パイプを使ってテンプレートのオブザーバブルをサスペンドします。Angularテンプレートで購読されているオブザーバブルの例外を捕捉する方法は?
場合によっては、HTTP GETから404を取得すると、例外がAngularでバブリングされ、アプリケーションが応答しなくなります。 私のサービスで.catch()
メソッドを使用できますが、コンポーネントに直接.subscribe()メソッドを持たないことがわかりましたが、どのように例外を処理できますか?
documentService:
public getDocument() {
return this.getDocument(serverUrl).catch((err) => this.handleError(err));
}
private handleError(error: Response) {
return Observable.throw(error);
}
はコンポーネント:
public ngOnInit() {
const document$ = this.reference$
.filter((i) => !!i)
.combineLatest(this.documentService.getBranch(),
(r: any, branch: string) => {
return this.documentService.getDocument(r.Id, r.targetId, this.GetHeadBranch(branch));
}).switch();
}
テンプレート:
<div *ngIf="document$|async; let document;">
....
</div>
はtです私の場合のように使用されたオブザーバブルで例外をキャッチするベストプラクティスはここにありますか?
まだ例外に対処するためのより良いアプローチが存在しないことを残念。カスタムパイプにはいくつかの余分なステップが必要です(観測可能なサブスクリプション、値の処理、例外の場合はリダイレクト)が必要な場合は、それを汎用にすることができれば長期的には勝利になります。 – Francesco