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);
}