На самом деле состояние меняется, но вы его не видите, потому что возвращаете подписку, которая еще не была завершена.Другими словами - вы увидите отправляемое действие после завершения подписки возвращаемой наблюдаемой.
Как упоминалось в комментариях, возвращаемая наблюдаемая действий подписывается за сценой, поэтому в этом нет необходимости.чтобы снова подписаться на него.
После этого, вы можете передать take(1)
в канал.
Что бы он ни делал, он завершает подписку наблюдаемого после того, как он сработал один раз.
@Action(SignIn)
signin(ctx: StateContext<AppStateModel>, { payload }: SignIn) {
return this.api$.signin(payload)
.pipe(
take(1), // <-- Add that
tap((user: User) => ctx.patchState({ isLoggedIn: true }))
);
}