Angular2$http get对具有路由属性的web api控制器的请求

Angular2$http get对具有路由属性的web api控制器的请求,angular,asp.net-web-api-routing,Angular,Asp.net Web Api Routing,我已将带有route属性的Web Api控制器应用于定义如下的方法: [Route("api/[controller]")] public DataController( [HttpGet("getdata/{a:int}/{b:int}/{dateFrom:datetime}/{dateTo:datetime}")] public IActionResult GetEvents(Int32 a, Int32 b, DateTime? dateFrom, DateTime? dateTo) {

我已将带有route属性的Web Api控制器应用于定义如下的方法:

[Route("api/[controller]")]
public DataController(
[HttpGet("getdata/{a:int}/{b:int}/{dateFrom:datetime}/{dateTo:datetime}")]
public IActionResult GetEvents(Int32 a, Int32 b, DateTime? dateFrom, DateTime? dateTo)
{
    if (ModelState.IsValid)
    {
            data = dataService.GetData(a,b,dateFrom, dateTo);
            return Ok(data);
        }

        return BadRequest();
    }
}
因此,公开的web api URL应该是:

当我使用Postman google chrome扩展发送GET请求时,我可以点击此控制器操作,URL参数解析正常

我想使用http get从angular2客户端从该web api获取数据:

let params: URLSearchParams = new URLSearchParams();
params.set('a', 1);
params.set('b', 2);
params.set('dateFrom', '2016-10-12T00:00:00Z');
params.set('dateTo', '2016-10-15T00:00:00Z');

    return this._http.get(this._eventsUrl, {
        search: params
    }).map((response: Response) => <ModelObject[]>response.json())
        .catch(this.handleError);
let-params:URLSearchParams=new-URLSearchParams();
参数集('a',1);
参数集('b',2);
参数集('dateFrom','2016-10-12T00:00:00Z');
参数集('dateTo','2016-10-15T00:00:00Z');
返回此。_http.get(此。_eventsUrl{
搜索:params
}).map((response:response)=>response.json())
.接住(这个.把手错误);
此调用试图从此URL获取数据:


如何将http.get from angular 2设置为使用web api路由中定义的URL?

URLSearchParams将参数添加到URL的搜索部分,该部分位于“?”之后

您需要构造一个包含整个url的变量,如下所示:

const url = `${this._eventsUrl}/${a}/${b}/${dateFrom}/${dateTo}`;
注意使用反勾号构造一个字符串,其中包含变量
a、b、dateFrom、dateTo
和调用
this.http.get(url.map