【问题标题】:Parameters not getting passed from Angular to API参数未从 Angular 传递到 API
【发布时间】:2018-04-17 02:13:19
【问题描述】:

我在这里错过了什么?

我的 Take 和 Skip 变量包含值,但是当我在 API 端检查时,参数为空。

我的 API

[HttpGet(Order = 0)]  
    public async Task<IActionResult> GetData(uint? Take, uint? Skip)
    {
     // DO stuff
    }

对 API 的 Angular 调用:

getData(    
    skip: number = null,
    take: number = null
  ): Observable<MyData[]> {
    console.log("skip=" + skip);
    console.log("take=" + take);
    return this.http
      .get(this.API_URL + "", {
        params: new HttpParams()
          .set('Skip', (skip == null) ? null : skip.toString())
          .set('Take', (take == null) ? null : take.toLocaleString())

      })
      .map((response: Response) => {
        return <MyData[]>response.json();
      })
      .catch(this.handleError);
  }

【问题讨论】:

  • 您能否显示从浏览器发送的最终 URL 是什么?使用调试工具和网络选项卡。
  • 看起来你正在混合旧 Http 和新 HttpClient

标签: angular asp.net-core


【解决方案1】:

将旧的、已弃用的HttpModule 的引用替换为HttpClientModule,然后将Http 替换为HttpClient 并修改您的代码以删除地图运算符(新的http 客户端不需要)

return this.http
  .get<MyData[]>(this.API_URL + "", {
    params: new HttpParams()
      .set('Skip', (skip == null) ? null : skip.toString())
      .set('Take', (take == null) ? null : take.toLocaleString())
})
  .catch(this.handleError);

【讨论】:

  • 我不确定这是如何解决这个问题的,而且它似乎不完整(未完成的三元运算符)。
  • @peinarydevelopment 仅供参考,用手机编辑有点困难,因此代码块消失了。当你投反对票时,我正在纠正它。混合这两个模块可能会导致问题。
  • 可能是,但看起来 JDS 使用 asp.net 作为后端并且调用它是错误的。这可能是主要问题,但如果没有更多代码就很难纠正
  • 我可以传递哪些额外的代码?是的,我使用 ASP.NET 作为 API(Core 2.0)。
  • 当我尝试上面的代码时,我收到错误:严重代码描述项目文件行抑制状态 TS) 无法调用其类型缺少调用签名的表达式。类型“HttpClient”没有兼容的调用签名。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-03
  • 1970-01-01
  • 1970-01-01
  • 2016-09-27
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多