Angular TransferState - Сериализация / Десериализация

Так что у меня проблема с тем, где данные, которые я храню внутри TransferState на сервере набирается и имеет свой собственный класс, но когда я читаю данные в браузере, ввод теряется, это имеет смысл, так как угловая документация говорит следующее:

Значения в хранилище сериализуются / десериализуются с использованием JSON.stringify/JSON.parse, Поэтому только логические, числовые, строковые, нулевые и не относящиеся к классу объекты будут сериализованы и десериализованы без потерь.

Мне было интересно, если есть способ добавить наши собственные методы сериализации / десериализации вместо TransferState использование JSON.stringify/JSON.parse внутренне, чтобы я мог сделать десериализацию самостоятельно и повторно инициализировать требуемые классы.

Если такой опции нет, то, возможно, существует какой-то обратный вызов после десериализации состояния, где я мог бы преобразовать значение, которое JSON.parse предусмотрено внутри TransferState,

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


ОБНОВИТЬ

На данный момент я добавил небольшой обходной путь, добавив набор текста к объекту, предоставленному из TransferState.get проблема с этим подходом заключается в том, что мне, возможно, придется повторить процесс для тех же самых распространенных типов, которые используются более чем в одном месте после каждого вызова TransferState.getЕсть ли более чистый подход?

Пример обходного пути:

if (this.transferState.hasKey(STATE_KEY)) {
    const state: IState = this.transferState.get<IState>(STATE_KEY, null);
    const deserializedState: State = deserializeState(state);
    this.transferState.remove(STATE_KEY);
    return of(deserializedState);
}

0 ответов

Другие вопросы по тегам