javascript - Angular 9无法发出post请求

标签 javascript angular angular9

我目前只是 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/

相关文章:

javascript - parseInt 与 Array.prototype.map

javascript - div的水平布局——哪种方法最好

javascript - 是否可以在没有 jQuery 的情况下使用 Materializecss?

angularjs - 如何将 Angular 2 与 NetBeans 一起使用?

html - 是否可以在甜蜜警报 2 中添加整个 Angular 组件?

javascript - 在 jQuery 中绑定(bind)动态创建的元素

javascript - 按类型过滤数组对象并将键值与对象进行比较

angular - 组件可注入(inject)?

angular - 以 Angular 9 每 x 分钟调用一次 http 请求

angular9 - Angular 9 中没有 `$ rootScope`。可以用什么?