Angular Httpclient post 不工作,但我无法捕获任何异常

Angular Httpclient post doesn't work, but i can't catch any exception

所以我正在尝试用 http 客户端创建一个 POST 到我的休息 api。我只需要发送一个 ID,但它根本没有做任何事情,就好像它不存在一样。没有错误信息等

这样试过:

httpOptions = {

    headers: new HttpHeaders({ 'Authorization': localStorage.getItem("type")+" "+localStorage.getItem("token")})
  };

 public likePet(id : string){
    var url = environment.apiKey+"/match/cr";
    const params = new HttpParams()
      .set('id', id)

    console.log(url);
    try{
      console.log("t1");
      this.httpClient.post(url,{params: params},this.httpOptions);
    } catch (error){
      console.error(error);
    }
    console.log("t2");
 }

这样:

 httpOptions = {
    headers: new HttpHeaders({ 'Authorization': localStorage.getItem("type")+" "+localStorage.getItem("token")})
  };

public createMatch(matchid: number){
  console.log("////");
  return this.httpClient.post(environment.apiKey+"match/cr?id="+matchid,this.httpOptions).pipe(
    catchError((err) => {
      console.error(err);
      window.alert("Failed");
      throw err
    })
  )
}

尝试使用完整的硬编码 url,例如:localhost:8080/api/match/cr?id=1

甚至没有错误消息。 API 工作正常。我的其他 http GET/POST 方法有效。 但这是我第一次 POST 没有发送 JSON,我一无所知。

post() 方法 returns 一个 Observable。就我而言,只要您订阅了该 Observable,就会立即发送呼叫。无论你在哪里调用 createMatch() 尝试 createMatch(matchId).subscribe() 看看是否有什么事情发生。

如果您不想使用 Observables,而是希望将您的响应作为 Promise,您可以这样写

 httpOptions = {
    headers: new HttpHeaders({ 'Authorization': localStorage.getItem("type")+" "+localStorage.getItem("token")})
  };

public createMatch(matchid: number){
  console.log("////");
  return this.httpClient.post(environment.apiKey+"match/cr?id="+matchid,this.httpOptions).pipe(
    catchError((err) => {
      console.error(err);
      window.alert("Failed");
      throw err
    })
  ).toPromise()
}