我使用http observable獲取數據。加載數據並等待響應時,我想禁用提交按鈕。Angular 2 - http - Observable - 啓動/停止/運行狀態
當前我已經在每個組件/表單上實現了狀態碼,以便在調用subscribe方法之前將狀態設置爲正在運行,並且如果響應存在,則禁用運行標誌。
問題是我必須對每個組件/表單執行此檢查。我想用一個模型將observable包裝起來,在請求發出前設置狀態信息。
什麼是最好的方法?在發出請求之前,我沒有找到解決方案來添加函數。 Observable之前沒有功能。我也嘗試連接兩個Observables。第一個僅用於表示第二個Observable正在啓動。
有沒有一種簡單的方法來以抽象的方式來聆聽observable的開始。我想換HTTP服務,以保持(啓動/停止/運行/ ...)指出...
編輯1:
這裏是什麼即時通訊目前正在做一些僞代碼。我在每個由按鈕觸發的observable上添加了這個狀態持有者。我想刪除這個重複的代碼。
this.mystateHolder.start(); // sets running;error,success to false
this.myservice.updateSomething(mydata).subscibe(
ok => mysateHolder.stop(false) // sets success to true and running to false
error => mystateHOlder.stop(true, error) // sets error to true and running to false
)
<button [disabeld]="mystateHolder.isRunning()"></button>
<span *ngIf="mystateHolder.hasErrors()">mystateHolder.getErrorMessage()</span>
目標僞代碼(也許):
const state = this.myservice.updateSomething(mydata).state()
state.subscribe();
console.log(state.hasErrors())
console.log(state.isRunning())
console.log(state.success())
我已更新我的示例(編輯1)。如果我檢查數據,那麼它也是另一種狀態檢查。如果沒有數據返回會怎麼樣?我必須一次又一次地對所有特定用例的每個可觀察對象執行操作,但每次都是一樣的。 – meleagros