2017-10-16 196 views
0

我必须重新连接从angularJS我的HTTP POST请求,这是写像这样:重写HTTP POST请求Angular4

function removeExtension(ext){ 
      $http({ 
       method: 'POST', 
       url: 'remove', 
       params: { removeExt: ext 
       } 
      }).then(function(resp){ 
       console.log('Its was successfull'); 
      }); 
     } 

现在我把它写在Angular4,像这样一个HostListener内:

@HostListener("click", ['$event']) 
    onDropdownItemClick(evt: MouseEvent) { 
     console.log('clicked with ' + evt.ctrlKey); 
     if (evt.ctrlKey){ 
      //http request here 
      //this.menuItem.id should be sent via http post 
     } 

这是我在我的Java代码:

@RequestMapping(value="/remove", method = RequestMethod.POST) 
    @ResponseBody 
    public String getExtensionToRemove(@RequestParam(value = "removeExt", required=false) String ext){ 
     _extensionService.setExtension(ext); 
     return null; 
    } 

如何才能实现这一目标,并也可为h我可以在响应返回后添加刷新事件吗?提前致谢。

回答

0

可以使用Http client

return this.http.post("/remove", {removeExt: ext}).toPromise() 
      .then(response => { 
//do something after response 
}) 
      .catch(err =>{ 
//catch error here 
}); 

Here you can find some good example for http client

+0

感谢您的回答,但我得到的是在我的Java控制器为空,这是因为它被作为一个承诺,不作为查询字符串参数,任何想法如何将它作为一个发送? –

+0

我看到这篇文章https://codecraft.tv/courses/angular/http/core-http-api/#_post_with_data表示一个对象被传递,而不是一个查询字符串参数,那么我的问题是如何修改后端获取我传递的字符串(ext)?或者有没有办法通过编辑角度发布请求直接传递它? –