Angular 7 ngrx edit store без особых действий - PullRequest
0 голосов
/ 12 ноября 2018

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

Мой код:

this.templatesLoaded
    .pipe(untilComponentDestroyed(this))
    .subscribe((loaded: boolean) => {
      if (loaded) {
        this.templateObs
          .pipe(untilComponentDestroyed(this))
          .subscribe((tmpl: ProjectTemplate) => {
            this.template = { ...tmpl };   // <-- THIS IS MY COPY

Я редактирую шаблонудаление полей:

deleteField(idx: number): void {
   this.template.fields.splice(idx, 1);
}

Теперь, если я покидаю маршрут, магазин обновляется, а "поля" уменьшаются на единицу ...

Как это возможно?

Если я отслеживаю события с помощью плагина Chrome Redx, никакие действия не запускаются ... только ROUTER_NAVIGATION ...

Спасибо всем!

1 Ответ

0 голосов
/ 14 ноября 2018

Оператор распространения остатка объекта { ... }, копирует только один уровень глубиной.

Возможно, из-за этого состояние изменилось, чтобы исправить это, вам придется скопировать свойства, например,

{ fields: ...tmpl.fields }
...