Магазин Angular ngrx не получает последнее значение

Я передаю параметр на страницу «Сведения об учетной записи», которая вызывает веб-API для получения сведений об учетной записи.

При первой загрузке страницы «Сведения об учетной записи» ничего не отображается, если я захожу в другую учетную запись, отображаются сведения о предыдущей учетной записи (это продолжается, т.е. следующая учетная запись будет отображать предыдущую).

Я попытался изменить порядок отправки и выбора, также попытался переместить отправку в конструктор, но я все еще получаю то же поведение.

Это то, чем я сейчас занимаюсь....

Сведения об учетной записи — (CustomerAccountDetailed содержит значения)

actionsSubscription: Subscription;
customerAccount$: Observable<CustomerAccountDetailed>;

constructor(private store: Store<IAppState>,
    private actions: SalesLedgerActions,
    private route: ActivatedRoute) {
}

ngOnInit(): void {
    this.actionsSubscription = this.route.params.subscribe(params => {
        this.store.dispatch(this.actions.fetchSingleCustomerAccount(params.id));
        this.customerAccount$ = this.store.select(getCustomerAccount);
    });
  }

public ngOnDestroy(): void  {
    this.actionsSubscription.unsubscribe();
  }

SalesLedgerEffects

@Effect()
FetchSingleAccount$ = this.actions$
   .ofType(SalesLedgerActions.FETCH_CUSTOMER_ACCOUNT)
   .switchMap((action: Action) => {
      return this.customerApiService.getCustomerDetail(action.payload);
})
   .map((customerAccount: ItemDto<CustomerAccountDetailed>) => this.actions.fetchSingleCustomerAccountSuccess(customerAccount));

SalesLedgerReducer

case SalesLedgerActions.FETCH_CUSTOMER_ACCOUNT_SUCCESS:
    const customerAccount: ItemDto<CustomerAccountDetailed> = payload as ItemDto<CustomerAccountDetailed>;
    return Object.assign({}, state, { selectedAccount: customerAccount.result as CustomerAccountDetailed }) as ISaleLedgerState;

селекторы

export function fetchCustomerRecord(state: ISaleLedgerState): any {
return state.selectedAccount;
}

// *************************** PUBLIC API's ****************************
export const getCustomerAccount: any = createSelector(getSalesLedgerState, fetchCustomerRecord);

person user2859298    schedule 26.10.2017    source источник


Ответы (1)


переместите это из своего subscription и поместите в свой конструктор:

this.customerAccount$ = this.store.select(getCustomerAccount);
      });
person dee zg    schedule 26.10.2017