我在 Angular Web 应用程序中使用 mxGraph,它可以在保存 mxGraph 图形的不同页面之间切换。
显示当前绘图的组件使用 mxGraphModel 和 mxCodec 对象作为属性。需要保存mxGraphModel和mxCodec对象:
let m: mxGraphModel;
let c: mxCodec; // they are initialized inside the application
使用众所周知的命令进入 localStorage:
localStorage.setItem('MX_GRAPH_MODEL', m);
localStorage.setItem('MX_CODEC', c);
以便可以在页面刷新时检索它们。
m和c变量用作 Angular 组件的属性,它们包含图形信息和样式,因此每次刷新页面时都会重新加载,这是我需要通过将其最后一个版本保存为本地存储来避免的。
现在我知道上述命令将不起作用,并且通过 JSON 对它们进行字符串化也不起作用:
localStorage.setItem('MX_GRAPH_MODEL', JSON.stringify(m));
localStorage.setItem('MX_CODEC', JSON.stringify(c));
问题:是否有 mxGraph 库函数,一种可以将这些对象转换/编码为字符串的方法,反之亦然,从字符串(以便可以使用 localStorage 保存它们)?
如果不是,那么保存 mxGraph 对象以避免在页面刷新时更改它们的适当方法是什么。我在 Angular 中使用单例类来保留它们,这对于在页面之间切换是可以的,但是,一旦调用刷新,所有类(包括单例)都会再次构造,并且我当前的图形绘制丢失了。