2

我正在开发一个带有 Angular 前端和 Java 后端的小型私人项目,最近我发现了一些奇怪的 IE11 行为(我知道 IE11 很糟糕,不应该与 Angular 项目一起使用)。有一次,我使用 Map Payload 向我的后端服务器发送了一个 POST。我知道 TS Maps 的 IE11 支持只是部分的。我从后端接收地图没有问题,但是当我发送地图时,我得到一个反序列化错误:

ERROR Can not deserialize Map key of type [...] from String "_t": not a valid representation[...]

后端期望 Map 的键是 Enum 的名称。我知道该错误告诉我他无法映射_t到 Enum 的值,这并不奇怪,因为 Enum 不包含该值。

奇怪的是,我没有_t在地图中放置键/值对。Firefox/Chrome 不会出现此问题。做了一些调试,发现 IE11 似乎在 Map 中添加了一些键/值对。

  mapName: {
     [functions]: ,
     __proto__: { },
     _f: undefined,
     _i: { },
     _l: undefined,
     _s: 0,
     _t: "Map",
     size: 0,
     CAT: 4
  },

我添加到地图的唯一内容是CAT: 4.

令人惊讶的是,我没有找到有关此问题的参考资料。有解决这个问题的方法吗?除了将这些值添加到后端枚举并忽略它们?

4

2 回答 2

0

为了解决这个问题,我刚刚停止使用 map 而是使用了类型化字典:

controllerProperty: {[keyOrWhatever:string]: string}
于 2019-12-23T19:31:00.063 回答
-1

您可以尝试以下定义来替换您的新地图()。

var mapName={ CAT: 4 };</p>

于 2019-01-31T00:30:47.967 回答