我目前只是 Angular 的初学者,
我正在尝试使用此函数发出发布请求:
signIn(user: User) {
console.log("1");
return this.http
.post<any>(`${this.endpoint}/login`, user)
.subscribe((res: any) => {
console.log("2");
localStorage.setItem("access_token", res.token);
this.getUserProfile(res._id).subscribe(res => {
this.currentUser = res;
this.router.navigate(["user-profile/" + res.msg._id]);
});
});
}
我尝试监控网络(使用 Firefox 中的网络选项卡),但发现没有发送任何数据。
打开控制台时,它显示“1”,但不显示“2”。
谢谢
最佳答案
您需要返回可观察对象并在那里订阅它。现在您正在返回订阅,因此您可能不知道调用实际上何时被触发。还要尽量避免嵌套订阅。您可以使用 RxJS 高阶运算符(例如 switchMap
)来传输多个可观察量。尝试以下方法
一些服务
signIn(user: User) : Observable<any> {
return this.http.post<any>(`${this.endpoint}/login`, user).pipe(
switchMap((user) => {
localStorage.setItem("access_token", user.token);
return this.getUserProfile(user._id);
}
);
}
组件
ngOnInit() {
this.someService.signIn(user).subscribe(
res => {
this.currentUser = res;
this.router.navigate(["user-profile/" + res.msg._id]);
},
(error) => {
// always good practice to handle HTTP observable errors
}
);
}
关于javascript - Angular 9无法发出post请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62213502/