Объект не может быть сброшен после отправки объекта в NgRx Store - PullRequest
0 голосов
/ 13 февраля 2020

В моем проекте Angular 8 есть шаблонно-управляемая форма.

Эта форма использует NgModel для получения данных по нажатию кнопки, которая запускает функцию для отправки этих данных вместе с несколько других предустановленных значений в Action для отправки сообщения через почтовую службу.

Объект:

  // Data for the reply
  public messageResponse = {
  transmissionRequest: {
    arrivalTime: null,
    attachments: [
      {
        contents: null,
        filename: null
      }
    ],
    ccRecipients: null,
    direction: 'OUTBOUND',
    originator: null,
    payload: null,
    recipient: null,
    subject: null,
    type: 'email'
  }
};

Попытка изменения:

this.messageResponse.transmissionRequest.payload = '';

действие, которое отправляется с сообщением:

this.store.dispatch(new SendReply(this.messageResponse));

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

ERROR TypeError: Cannot assign to read only property 'payload' of object '[object Object]'

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

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

Изменяет ли отправка в хранилище разрешения оригинального объекта?

Как мне обойти это

1 Ответ

0 голосов
/ 13 февраля 2020

Действия являются неизменными, NgRx имеет проверки во время выполнения, которые замораживают действия, когда они отправляются. Поскольку объект заморожен, у вас есть эта ошибка.

См. Документы для получения дополнительной информации, https://ngrx.io/guide/store/configuration/runtime-checks#strictactionimmutability

...