NGXS возвращает только необходимые значения - PullRequest
0 голосов
/ 30 мая 2020

Привет, у меня есть этот сценарий NGXS

@Action(Login)
  login(ctx: StateContext<AuthStateModel>, action: Login) {
    return this.authService.login(action.payload).pipe(
      tap((result: { token: string }) => {
        ctx.patchState({
          token: result.token,
          username: action.payload.username
        });
      })
    );
  }

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

С уважением.

1 Ответ

0 голосов
/ 02 июня 2020

Если вы хотите увидеть обновленные значения имени пользователя / токена, тогда самый простой способ - использовать withLatestFrom в сочетании с отправкой в ​​компоненте.

Например, в компоненте у вас будет селектор

@Select(AuthState) authState$: Observable<AuthStateModel>;

Когда вы отправляете действие ..

this.store.dispatch(new Login(..))
.pipe(
   withLatestFrom(this.authState$)
  )
  .subscribe(([_, authData]) => {
    // do something with authData.token / username
  });

Этот подход показан здесь, в документации для действий отправки .

...