我正在做一个带有Angular前端和Java后端的小型私人项目,最近我发现它有一些奇怪的IE11行为(我知道IE11很可怕,不应该与Angular项目一起使用)。有一次,我向我的后端服务器发送了一个带有地图有效负载的帖子,我知道IE11对TS地图的支持只是部分的。我从后端接收地图没有问题,但当我发送地图时,我得到一个反联盟错误:
ERROR Can not deserialize Map key of type [...] from String "_t": not a valid representation[...]后端希望Map的键是Enum的名称。我知道这个错误告诉我,他无法将_t映射到枚举的值,这并不奇怪,因为枚举不包含该值。
奇怪的是,我没有在映射中放入带有_t的键/值对。Firefox/Chrome不会出现此问题。做了一些调试,发现IE11似乎向映射中添加了一些键/值对。
mapName: {
[functions]: ,
__proto__: { },
_f: undefined,
_i: { },
_l: undefined,
_s: 0,
_t: "Map",
size: 0,
CAT: 4
},我添加到地图中的唯一东西是CAT: 4。
令人惊讶的是,我没有找到关于这个问题的参考资料。有没有解决这个问题的办法?除了将这些值添加到后端枚举并忽略它们?
发布于 2019-12-24 03:31:00
为了解决这个问题,我不再使用map,而是使用类型化的字典:
controllerProperty: {[keyOrWhatever:string]: string}发布于 2019-01-31 08:30:48
您可以尝试执行以下定义来替换您的新map()。
var mapName={ CAT: 4};
https://stackoverflow.com/questions/54254007
复制相似问题