Angular Http Post Observable 未触发订阅
Angular Http Post Observable not triggering subscribe
我不确定我是否完全理解 Angular 中的 Observable,因为我的 Observable 不是“触发”或在调用时从订阅获取任何信息。我正在制作一个简单的登录系统,并试图从 Http post 获取成功的消息,我的用户服务中有以下 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 后没有发送回任何信息,它会将数据添加到数据库而不是 return 任何类型的消息,这就是为什么Observable 没有反应。简单地说,我正在使用一个 Observable,它调用一个函数来处理数据,HTTP 请求,但 return 什么也没做。我的假设是 HTTP 状态会自动 return Observable 的东西。
我不确定我是否完全理解 Angular 中的 Observable,因为我的 Observable 不是“触发”或在调用时从订阅获取任何信息。我正在制作一个简单的登录系统,并试图从 Http post 获取成功的消息,我的用户服务中有以下 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 后没有发送回任何信息,它会将数据添加到数据库而不是 return 任何类型的消息,这就是为什么Observable 没有反应。简单地说,我正在使用一个 Observable,它调用一个函数来处理数据,HTTP 请求,但 return 什么也没做。我的假设是 HTTP 状态会自动 return Observable 的东西。