NGXS 状态没有改变

Nac*_*llo 5 javascript angular ngxs

可能有人知道为什么 NGXS 状态不能在 HttpClient POST 请求中改变。

ctx.patchState()
Run Code Online (Sandbox Code Playgroud)

仅适用于 HTTP POST 请求之外。

Eli*_*hen 5

实际上,状态正在发生变化,但您看不到它,因为您返回了尚未完成的订阅。换句话说 - 一旦返回的 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)