typescript 如何将多个参数从Angular服务传递给ASP.NETCore5控制器操作?

9rygscc1  于 2023-01-03  发布在  TypeScript
关注(0)|答案(1)|浏览(107)

我使用ASP.NETCore5技术作为后端,使用Angular15.0作为前端。
后端控制器获取一些过滤项的动作如下所示:

[HttpGet("getAllCustomerPaymentsByDateRange")]
public async Task<IActionResult> GetAllCustomerPaymentsByDateRange([FromQuery] DateTime firstDate,[FromQuery] DateTime endDate,[FromQuery] long customerId )
{
    // ... rest of code 
}

我想将这些参数从Angular服务中的方法传递给操作:

getAllCustomersByDateRange(???): Observable<PaymentForList[]> {
    return this.http.get<PaymentForList[]>(this.baseUrl + '/getAllCustomerPaymentsByDateRange/', ???);
}

如何将ASP.NET核心控制器操作正确接收的参数传递给Angular方法?我尝试将参数作为模型传递,另一端将其作为([FromBody] ModelParams params)接收,但在Angular端出现错误:
无法分配PaymentForList[]|数组缓冲区到支付列表[]....
有别的办法吗?

gcmastyq

gcmastyq1#

不建议像HTTP GET with request body中所讨论的那样,将带有主体的请求发送到GET API。
要传递查询参数,应使用HttpParams

getAllCustomersByDateRange(firstDate: Date, endDate: Date, customerId: number): Observable<PaymentForList[]> {

  let params: HttpParams = new HttpParams();
  params = params.append('firstDate', firstDate.toISOString());
  params = params.append('endDate', endDate.toISOString());
  params = params.append('customerId', customerId);

  let httpOptions = {
    params: params
  };

  return this.http.get<PaymentForList[]>(this.baseUrl + '/getAllCustomerPaymentsByDateRange/', httpOptions);
}

参考HttpClient.get()重载#15。

相关问题