2016-04-25 57 views
1

我需要觸發類似於JQuery的事件ajaxStartajaxStop 我發現了一個半這裏的解決方案 - > How to set default HTTP header in Angular2? 所以,此刻我可以處理ajaxStart事件。在Angular2方式如何處理ajaxStart和ajaxStop事件

任何解決方案如何處理ajaxStop事件?

post(url: string, body: string, options?: RequestOptionsArgs): Observable<Response> { 
    //onAjaxStart 
    $("#loader").show(); 
    return super.post(url, body, options); //Any method here to handle event? 
} 

我試圖用.catch(),但只觸發onError的

我需要調用我的生命的時候裝載機AJAX火災,並隱藏它,當它停止我每次使用Ajax請求的時間。

所以我想覆蓋默認的ajax方法。但我無法找到正確的方法觀察到(

+0

這無關你的問題,但而不是使用jQuery爲什麼你沒有一個關於元素的if語句並且基於你的Component中的一個變量來顯示/隱藏它們?我認爲這通常是處理角色的方式。 – Dehli

回答

1

你可以利用的可觀察的「終於」運營商

這裏使用的樣本:

post(url: string, body: string, options?: RequestOptionsArgs): Observable<Response> { 
    //onAjaxStart 
    $("#loader").show(); 
    return super.post(url, body, options).finally(() => { 
     //onAjaxStop 
     $("#loader").hide(); 
    }); 
} 
+0

是的,它很酷,但我需要返回一個可操作的對象 因爲我想把這個覆蓋的方法稱爲簡單post/g et/etc請求 是的,它很酷,但我需要返回一個oservable對象。 因爲我想調用此方法overrided簡單交/獲得/等請求 this.http.post( 「someult」,字符串).MAP((RES:響應)=> res.json()) .subscribe().....等 – ArtemSky

+0

這並不妨礙關於observable ;-)我指的是由finally方法返回的那個。訂閱時您將收到請求的結果... –

相關問題