簡體   English   中英

無法通過@ ngrx / effects @ 4.1.1和@ ngrx / store @ 4.1.1從角度4的可觀察值中獲取計數

[英]Unable to get the count from an observable in angular 4 with @ngrx/effects@4.1.1 and @ngrx/store@4.1.1

我正在嘗試通過頁面效果將元素插入數據庫。 單擊提交后,頁面將重定向到儀表板頁面,在其中顯示用戶為用戶添加到數據庫中的許多元素的計數。 但是在重定向成功之后(意味着一旦成功創建元素),我將看不到計數,而是只能在刷新后才能看到。 請按照屏幕

這是創建頁面

單擊提交按鈕后,我應該看到計數為4,但是我什么都沒看到

刷新頁面后,我可以看到計數

在創建頁面中,單擊創建按鈕后,將調用以下代碼

    this._store.dispatch(new SomeAction.AddNewAction( this.somemodel ));
    this._router.navigate(['/dashboard']);

在儀表板構造函數中

    this._store.dispatch(new SomeAction.LoadModelAction(userid));

    this.modelObserver$ = this._store.select('models');

在dashboard.component.html頁面

   <div class="text-right">
       <span class="badge badge-secondary">You have {{ (modelObserver$ | async).length }} model</span>
   </div>

任何幫助將非常感激..

我猜想LoadModelAction正在從API /數據庫加載記錄。 我不確定在構造函數中分派動作是否是個好主意。

首先:即使您要執行此操作,也應使用ngOnInit方法調度它。

其次:您不確定如果調用此操作,則記錄已經存在。

如果使用的是ngrx-effects,則解決方案很簡單:在成功執行AddNewAction Action之后,應調用分派LoadModelAction。 這意味着您應該至少具有3個動作: AddNewActionAddNewSuccessActionLoadModelAction 最好的解決方案是,如果API返回您的模型作為添加新元素的響應(在這種情況下,您僅需要AddNewActionAddNewSuccessAction )。 如果您對理解它有一些疑問:請分享您的效果代碼,我將嘗試逐步解釋它:)

暫無
暫無

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

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