簡體   English   中英

從AuthGuard canActivate中的Observable.catch重新拋出錯誤

[英]Re-throwing error from Observable.catch in AuthGuard canActivate

我在AuthGuard的canActivate方法中有以下代碼:

 return this.http.get(url) .map(res => { console.log(res.json()); return true; }) .catch(error => { return Observable.throw(error); // return Observable.of(false); }); 

當我取消對Observable.of(false)行的注釋時,一切都很好。 但是,我不僅要返回包裝在Observable中的false,還希望重新引發該錯誤,以便我的全局自定義ErrorHandler可以捕獲該錯誤並顯示一條用戶友好的消息。

你可以這樣做:

Observable.throw('error')
    .catch(error => {
        return Observable.throw(error).startWith(false);
    })
    .subscribe(
        value => console.log('Next', value),
        err => console.log('Error', err)
    );

catch()返回的Observable只是一個常規的Observable,它也可能引發錯誤。

請注意,您必須在subscribe()設置錯誤回調,否則錯誤將被重新拋出。

該演示打印以下輸出:

Next: false
Error: error

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM