因此,我遇到一个问题,即我存储在服务器上TransferState
中的数据被键入并具有自己的类,但是当我在浏览器中读取数据时,键入丢失了,因为角度文档中显示以下内容:
使用JSON.stringify
/ JSON.parse
对存储中的值进行序列化/反序列化。因此,仅布尔,数字,字符串,null和非类对象将以无损方式序列化和反序列化。
我想知道是否有一种方法可以添加我们自己的序列化/反序列化方法,而不是在内部使用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);
}