javascript - 无法读取 Angular2 中的字符串插值

标签 javascript angular express mean-stack observable

我正在订阅一项服务,该服务返回一个具有属性(firstNamelastNameemail等)

我无法在我的 View 中显示该值。如果我写 {{ user }} 浏览器会显示 [object Object],但是当我输入 {{ user.firstName }} 我得到错误提示未定义的属性。

import { Component, OnInit } from "@angular/core";
import { AuthService } from "./auth.service";
import { Router } from "@angular/router";
import { User } from "./user.model";
import { Message } from "../messages/message.model";
import { FormsModule } from "@angular/forms";

@Component({
    selector: 'app-profile', 
    template: `
    <h1>This is my profile page!</h1>
    <div>
      {{ user.firstName }}
    </div>

    `
})

export class ProfileComponent implements OnInit {

    user: User;

    constructor(private authService: AuthService, private router: Router) {}

    ngOnInit() {
      this.authService.getUser().subscribe(
        (user: User) => {
        console.log(user.firstName);    //returns firstName of user object in console
        this.user = user;
        }
      );
    }    
}

来 self 的 authService

getUser()  {
      const userId = localStorage.getItem('userId');
      const token = localStorage.getItem('token') ? '?token=' + localStorage.getItem('token') : '';
      return this.http.get('http://localhost:3000/user/' + userId + token) 
      .map((response: Response) => {
      const user = response.json();
      let profileUser = new User(user.obj.email, user.obj.password, user.obj.firstName, user.obj.lastName);
      this.profileUser = profileUser;
      console.log(profileUser);
      return this.profileUser;
      })
      .catch((error: Response) => Observable.throw(error.json())); 
    }

最佳答案

您的模板呈现速度快于您的服务返回数据的速度。尝试以下方法解决问题:

<h1>This is my profile page!</h1>
<div>
  {{ user?.firstName }}
</div>

关于javascript - 无法读取 Angular2 中的字符串插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43054893/

相关文章:

html - 具有可扩展行的 Angular Material 表,在更改选项卡时自动扩展以 stackBlitz 示例

Angular 2 - 在调用方法之前使用其他服务的服务

express - Mocha websocket 测试不会可靠地失败/通过

javascript - 前端javascript文件放在哪里?

javascript - 使用纯函数创建组合函数

c# - 如何在 JavaScript 中设置属性背后的代码

javascript - Javascript onBlur 事件在 html 文件中出现错误

angular - 符号 '$' 在 Angular 中意味着什么?

mysql - Nodejs-Express-Mysql : render view after post

javascript - VueJS 将数据从一个组件共享到另一个组件时出错