Angular Http 订阅 - 无法分配给组件中的变量

Angular Http subscribe - cannot assign to variable in component

我想从 api 中检索数据并将其分配给 angular 组件中的某个值。在 subscribe 中,我试图将数据分配给 loggedUser,然后调用此订阅内的函数以使用此接收到的对象导航到另一个组件。不幸的是,我收到错误消息:请求的路径在索引 1 处包含未定义的段。我也想在订阅之外设置这个对象。我怎样才能做到这一点?

 logIn() {
      this.portfolioAppService.logIn(this.loggingUser).subscribe((data) => {
      this.loggedUser = data;
      console.log(this.loggedUser);
      console.log(data);
      this.navigateToProfile(this.loggedUser.Id);
    });
  }

  navigateToProfile(id: number) {
    this.router.navigate(['/profile', id]);   
  }

console output

您在调用 navigateToProfile 时使用了错误命名的 属性。

从您的控制台输出,我可以看到订阅中的 data 对象如下所示:

{
  id: 35,
  // ..
}

但是你是这样调用函数的:

this.navigateToProfile(this.loggedUser.Id);

而是使用 属性 id(小写)

this.navigateToProfile(this.loggedUser.id);

为了将来缩小此问题的范围,请尝试在测试中更加具体。人类善于看到他们想看到的东西,并且会假设问题比实际情况更复杂。如果您尝试过 console.log(this.loggedUser.Id),您会看到结果 undefined,并自己解决问题。