我有一个Angular 4项目,我正在创建一个示例Map,如下所示:
let sampleMap = new Map<string, string>();
sampleMap.set('key1','value1');
现在我将此Map作为参数传递给Angular 4 Post方法,该方法连接到Spring Boot Rest后端,如下所示
Angular 4代码:
this.http.post('http://localhost:8080/data/posturl', sampleMap).map((response: Response) => {
return <string>response.text();
})
Spring Boot Rest后端代码:
@RequestMapping("/posturl")
public String launch(@RequestBody Map<String, String> sampleMap) {
System.out.println("Received=" + sampleMap);
return "SUCCESS";
}
虽然当我尝试打印&#39; sampleMap&#39;如上所示,它打印如下的空白地图:
Received={}
我正在使用打字稿版本&#39; ~2.3.3&#39;和我的&#39; tsconfig.json&#39;提及目标为&#39; es5&#39;。有人可以解释一下这种行为吗?
答案 0 :(得分:3)
您必须将Map转换为键值对数组,因为Typescript映射不能直接在http帖子体内使用。
您可以按如下方式转换地图:
const convMap = {};
sampleMap.forEach((val: string, key: string) => {
convMap[key] = val;
});
this.http.post('http://localhost:8080/data/posturl', convMap).map((response: Response) => {
return <string>response.text();
})
答案 1 :(得分:0)
您可以创建一个具有键作为属性的对象。包含2个项目的地图示例:
let myObject = {"key1":"value1","key2":"value2"};
this.http.post('http://localhost:8080/data/posturl', myObject ).map((response: Response) => {
return <string>response.text();
})