Nac*_*llo 5 javascript angular ngxs
可能有人知道为什么 NGXS 状态不能在 HttpClient POST 请求中改变。
ctx.patchState()
Run Code Online (Sandbox Code Playgroud)
仅适用于 HTTP POST 请求之外。
ctx.patchState()
Run Code Online (Sandbox Code Playgroud)
实际上,状态正在发生变化,但您看不到它,因为您返回了尚未完成的订阅。换句话说 - 一旦返回的 observable 的订阅完成,您将看到正在调度的操作。
正如评论中提到的,返回的动作可观察对象是在幕后订阅的,所以不需要再次订阅它。
说完之后,你可以通过take(1)管道。
它的作用是在触发一次后完成对 observable 的订阅。
@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 }))
);
}Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1367 次 |
| 最近记录: |