![](/img/trans.png)
[英]Angular routing inside a http post Observable / subscribe
[英]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.