【发布时间】:2019-02-01 09:58:18
【问题描述】:
可能有人知道为什么 NGXS 状态不能在 HttpClient POST 请求中改变。
ctx.patchState()
仅适用于 HTTP POST 请求之外。
@Action(SignIn)
signin(ctx: StateContext<AppStateModel>, { payload }: SignIn) {
// ctx.patchState({isLoggedIn:true}) this works!
return this.api$.signin(payload)
.pipe(
tap((user: User) => {
console.log(user);
ctx.patchState({ isLoggedIn: true })
})
)
.subscribe(
(user: User) => {
ctx.patchState({ isLoggedIn: true })
}
)
}
【问题讨论】:
-
您的
console.log声明是否在tap中被打印? -
是的,数据被打印了,但是状态没有改变,只有当我在订阅之外调用 ctx.patchState() 时才会改变。
-
你真的应该发出一个带有加载数据的有效载荷的动作。也不要在操作内部订阅。 Ngxs 会为你订阅。
-
谢谢!!效果更好,我不知道 ngxs 订阅 observables,谢谢。
标签: javascript angular ngxs