从组件 ngrx 更改存储状态

changing the store state from component ngrx

我正在使用商店

中的 select 或 select
this.quizz = this.store.select(getSelectedQuizz);

我使用异步管道在模板中像这样读取这个可观察对象

[*ngIf="quizz | async; let quizz"]

我只定义了动作,我没有修改减速器,但模板是一个表单,当我保存表单时,我发送了一个更新动作,它只在我的动作中用只读定义,但我注意到每当我保存表单并发送商店更改的操作,我没有在 reducer 中指定任何逻辑来更新更新操作的状态,但我不明白为什么。

您正在使用 2 向数据绑定将存储状态绑定到表单,这是一种不好的做法。
除了 reducer 之外,不要触及存储状态中的任何内容。

使用扩展运算符复制状态:

this.store.select(getSelectedQuizz).subscribe(quizz => 
    this.quizzModel = {...quizz };
);

还要注意深拷贝。使用类似 this.quizzModel = JSON.parse(JSON.stringify(quizz )); 的东西进行深度复制。

提示: 为避免此类错误,您可以强制状态不可变。 检查 ngrx-store-freeze