我正在使用选择器从商店中进行选择
this.quizz = this.store.select(getSelectedQuizz);
我使用异步管道在模板中从这个observable中读取
[*ngIf="quizz | async; let quizz"]
我只定义了动作并且我没有修改减速器,但是当我保存表单时模板是一个表单我发送了一个更新操作,这个动作只在我的readonly操作中定义但我注意到我保存表单并发送时商店更改的操作,我没有在reducer中指定任何逻辑来更新更新操作的状态,但我不明白为什么。
您正在使用双向数据绑定将存储状态绑定到表单,这是一种不好的做法。 除了减速器之外,请勿触摸存储状态内的任何物体。
使用spread运算符获取状态副本:
this.store.select(getSelectedQuizz).subscribe(quizz =>
this.quizzModel = {...quizz };
);
还要注意深层复印。使用类似this.quizzModel = JSON.parse(JSON.stringify(quizz ));
的东西进行深层复制。
提示:为了避免这种错误,你可以强制状态是不可变的。检查ngrx-store-freeze