Javascript 角度Http订阅-无法分配给组件中的变量

Javascript 角度Http订阅-无法分配给组件中的变量,javascript,angular,typescript,http,subscribe,Javascript,Angular,Typescript,Http,Subscribe,我想从api中检索数据,并将其分配给角度组件中的某个值。在subscribe中,我试图将数据分配给loggedUser,然后在此subscribe中调用函数以导航到具有此接收对象的另一个组件。不幸的是,我得到了错误:请求的路径在索引1处包含未定义的段。我想把这个对象也设置在订阅之外。我怎样才能做到这一点 logIn() { this.portfolioAppService.logIn(this.loggingUser).subscribe((data) => {

我想从api中检索数据,并将其分配给角度组件中的某个值。在
subscribe
中,我试图将数据分配给
loggedUser
,然后在此subscribe中调用函数以导航到具有此接收对象的另一个组件。不幸的是,我得到了错误:请求的路径在索引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]);   
  }

调用
navigateToProfile
时,您使用的属性名称不正确

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

{
  id: 35,
  // ..
}
this.navigateToProfile(this.loggedUser.Id);
但您调用的函数如下所示:

{
  id: 35,
  // ..
}
this.navigateToProfile(this.loggedUser.Id);
相反,请使用属性
id
(小写)


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

您从
console.log(数据)
中看到了什么?你能将输出添加到问题中吗?我添加了控制台输出的链接-这两个console.logs返回相同的对象,但loggedUser是一个用户类型的对象,它有一个名为“Id”的字段,当我更改为“Id”时,它不知道它是什么属性。后端可能存在一些问题?您确定您的映射与您的用户类型正确吗?您可以发布console.log(this.loggedUser)吗?但这是Javascript。您的浏览器中没有Typescript。Typescript只允许您对设计时预期发生的事情进行建模。您的Typescript模型应该反映Javascript对象本身。如果希望对象与HTTP响应具有不同的名称,请在服务中映射它们。如果不希望,则需要更改Typescript模型以匹配HTTP响应