有幾乎是無止境的方法可以做到這一點,這裏是如何通過NGRX店和效果做一個這樣的例子:
- ...
- ...
- 服務回報成功結果到效果(在我們的例子中更新的用戶對象)
- 效果發出
UPDATE_USER_SUCCESS_ACTION
。與成功,一起行動的效果發出另一個動作 RESET_UPDATE_EVENT_ACTION
(或者你可以設置爲 一個單獨的效果這一點,如果你喜歡)
的減速處理這些操作方式如下:
UPDATE_USER_SUCCESS_ACTION:
- 更新當然用戶對象
- 在商店設置一個標誌:
userWasUpdated: true
RESET_UPDATE_EVENT_ACTION:
- 設置在商店的標誌:
userWasUpdated: false
而在你的組件,你執行以下操作:
userWasUpdated$ = this.store$
.select(state => state.userWasUpdated) // this will only trigger when the value changed, because ngrxStore.select has a built-in distinctUntilChanged()
.filter(wasUpdated => wasUpdated) // we are only in "truthy" events, so we filter out the other events
而且隨着userWasUpdated$
你現在有一個Observable
,只要userObject成功更新就會發出。
聽起來像很多代碼?是的,是的。只要有可能,我的個人解決方案是創建一些通知服務,顯示吐司/警報,我直接從效果中調用它。
感謝您的確認。這與我最終做的非常相似。我也實現了一個toast服務,在效果上,我使用「showToast」分派一個Message對象,這樣我就可以控制何時顯示或者視圖自身處理所有事情。 –