簡體   English   中英

Angular Http Post Observable 不觸發訂閱

[英]Angular Http Post Observable not triggering subscribe

我不確定我是否完全理解 Angular 中的 Observables,因為我的 Observable 沒有“觸發”或在調用時從 subscribe 獲取任何信息。 我正在制作一個簡單的登錄系統,並試圖從 Http 帖子中獲取成功的消息,我的用戶服務中有以下 Observable 函數

addUser(user: User) : Observable<any> {
    var headers = new HttpHeaders()
    headers.append('Content-Type', 'application/json');

    return this.http.post('http://localhost:4000/api/users/add', user,{headers:headers}).pipe(
        map((response: any) => response.json())
    );
}

然后我有一個帶有函數onSubmit的注冊組件,該函數在提交表單時被調用。 此函數從服務調用addUser以將新用戶發送到 API 並將其添加到數據庫中。

onSubmit(): void {
    this.userService.addUser(this.user)
        .subscribe(res => {
            console.log("Registration successful");
            this.isSuccessful = true;
        },
        err => {
            console.error("Registration failed: " + err);
            this.isSignUpFailed = true;
        }
    );
}

Http post 調用有效,我的 API/Backend 接收數據並成功將用戶添加到數據庫。 我的問題是在 Angular 中,Observable 永遠不會提供成功的信息或響應,這意味着它永遠不會在onSubmit函數的訂閱調用中執行以下操作

console.log("Registration successful");
this.isSuccessful = true;

我相信這是由於我對 Observables 的誤解,但即使查看了其他幾個示例,我也不確定如何解決它。

只需移除管道,它就可以正常工作,不需要 response.json

檢查您的控制台,您會發現類似這些錯誤的內容

Registration failed: TypeError: response.json is not a function
addUser(user: User): Observable<any> {
    var headers = new HttpHeaders();
    headers.append("Content-Type", "application/json");
 
    return this.http
      .post("https://jsonplaceholder.typicode.com/posts", user, {
        headers: headers
      })
  }

事實證明它與 Angular 無關。 愚蠢的錯誤,問題是我的 API 在調用 post 后沒有發送任何信息,它會將數據添加到數據庫但不返回任何類型的消息,這就是 Observable 沒有反應的原因。 簡單地說,我使用了一個 Observable,它調用了一個操作數據的函數,即 HTTP 請求,但什么都不返回。 我的假設是 HTTP 狀態會自動為 Observable 返回一些東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM