изменение состояния магазина из компонента ngrx - PullRequest
0 голосов
/ 25 июня 2018

Я использую селекторы, чтобы выбрать из магазина

this.quizz = this.store.select(getSelectedQuizz);

Я использую асинхронный канал для чтения из этого наблюдаемого, как это в шаблоне

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

Я определяю толькодействие, и я не изменил редуктор, но шаблон - это форма, когда я сохраняю форму, я отправляю действие обновления, которое определено только в моих действиях, только для чтения, но я замечаю, что когда я сохраняю форму и отправляю действие, хранилищеизменилось, и я не указал никакой логики в редукторе для обновления состояния для действия обновления, но я не понимаю, почему.

enter image description here

1 Ответ

0 голосов
/ 25 июня 2018

Вы используете двустороннюю привязку данных для привязки состояния хранилища к форме, что является плохой практикой.
Не трогайте ничего внутри состояния хранилища, кроме редукторов.

Используйте оператор распространения, чтобы получить копию состояния:

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

Также позаботьтесь о глубоких копиях. Используйте что-то вроде this.quizzModel = JSON.parse(JSON.stringify(quizz )); для глубокого копирования.

Подсказка: Чтобы избежать ошибок такого рода, вы можете заставить государство быть неизменным. Чек ngrx-store-freeze

...