![](/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.