我在 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 库函数,一种可以将这些对象转换/编码为字符串的方法,反之亦然,from-string(以便可以使用 localStorage 保存它们)?
如果没有,保存 mxGraph 对象以避免它们在页面刷新时被更改的适当方法是什么。我在 Angular 中使用单例类来保留它们,这对于在页面之间切换是可以的,但是,一旦调用刷新,所有类(包括单例)都会再次构造,并且我当前的图形绘制会丢失。
查看所提供示例的 getGraphXml() 函数,您的模型将作为字符串,可以存储在我猜的任何地方