【发布时间】:2021-12-23 09:32:05
【问题描述】:
我不确定我是否完全理解 Angular 中的 Observables,因为我的 Observable 在调用时不会“触发”或从订阅中获取任何信息。我正在制作一个简单的登录系统,并试图从 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 的误解造成的,但即使在查看了其他几个示例之后,我也不确定如何解决它。
【问题讨论】:
-
你不需要这个:map((response: any) => response.json() - 除非你有一个非常旧的角度版本..?另外,你不需要标题.
标签: angular typescript observable